【问题标题】:Rails 3 Routing - How Do I Use Parameters from the Root Route?Rails 3 路由 - 如何使用根路由中的参数?
【发布时间】:2011-10-04 23:46:34
【问题描述】:

我是 Rails 新手,在我正在编写的一个小应用程序中遇到了路线障碍 -

我想使用根路由将参数映射到特定控制器 -

例如,假设我有一个控制器 VariablePageController,它将根据 URL 中的参数呈现不同的内容。

所以当有人访问我的网站时,mysite.com 将转到主页,但 mysite.com/[pagename] 将通过我的 VariablePageController,但用户将留在 mysite.com/[pagename] 而不是 mysite .com/VariablePage/[页面名称] -

变量[pagename]是动态生成的,所以无法在routes.rb中列出所有可能...

如何通过路由来达到这个效果?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 model-view-controller


    【解决方案1】:

    你可以做一个简单的命名路线,比如

    match '/pagename' => "variablepage#pagename", :as => "pagename"
    

    那么您的链接将如下所示

    <%= link_to pagename, pagename_path %>
    

    <%= link_to "pagename", pagename_path %>
    

    在你的可变页面控制器之后,你有

    def pagename
    .....
    end
    

    希望对你有帮助

    【讨论】:

    • 这不是我的意思 - 页面名可以是任何东西,它是动态的,可以是 X、123、狗、猫等 - 用户生成一个带有他们选择的名称的页面.我希望根路由接受 mysite.com/[variablepage] ,即 X、123、狗、猫等,并基于此从数据库中提取内容。我只是不知道如何将它与控制器匹配,因此我可以将值从参数 [] 中提取出来。我不可能像这样定义路由,因为它们是动态页面 - 这有助于澄清吗?
    【解决方案2】:

    好的,我找到答案了,有兴趣的朋友可以看看……

    我本质上想要的,但我想没有很好地描述,是基于 URL 根而不是 /controller/ 路由的“slug 样式”或“友好”url。

    要做到这一点 - 在 routes.rb 中执行以下操作: 标准主页路径

    root :to => "page#index"

    基于参数的回家路线

    匹配 ':url' => "page#show"

    【讨论】:

      猜你喜欢
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多