【问题标题】:Can I have dynamic named routes in rails?我可以在 Rails 中使用动态命名路线吗?
【发布时间】:2012-09-10 13:49:29
【问题描述】:

我有一个页面控制器,其中支持 3 个静态页面(例如:aboutus、faq 和 home)。我在控制器中没有任何操作,只有适当的视图,所以添加新页面很容易。

我使用了默认路由: 匹配':controller(/:action(/:id))(.:format)'

现在可以通过以下方式访问我的页面:'http://localhost:3000/pages/faq'(或任何其他页面)

我想给这些路线命名,所以当我从其他页面创建指向它们的链接时,我会使用类似的东西:

link_to 'FAQ' faq_path'

而不是 link_to 'FAQ' '/pages/faq'

是否可以创建“动态命名路由”?我试过这样的事情:

match 'pages/:action' => 'pages#:action', :as => :action

但它并没有真正起作用......

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    您不能轻易地创建这样的动态方法,但是如果您换一种方式思考它,您实际上是在参数化您的路径助手。 Rails 确实有一个简单的方法来做到这一点:

    match "pages/:action", controller: "pages", as: "pages"
    
    pages_path("faq") # => /pages/faq
    

    【讨论】:

      【解决方案2】:
      match "pages/faq", to: "pages#faq", as: "faq"
      match "pages/home", to: "pages#home", as: "home"
      match "pages/aboutus", to: "pages#aboutus", as: "aboutus"
      

      会给你以下帮手:

      home_path or home_url
      faq_path or faq_url
      aboutus_path or aboutus_url
      

      【讨论】:

      • 这远非“动态命名”。如果你有几十个,你真的不想把它们都列出来,除非别无他法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多