我可以在rails中使用动态命名路由吗?

时间:2012-09-10 13:49:30

标签: ruby-on-rails

我有一个页面控制器,其中我支持3个静态页面(例如:aboutus,faq和home)。我在控制器内部没有任何操作,只有相应的视图,因此添加新页面将很容易。

我使用了默认路线:     match':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

但它确实没有用......

2 个答案:

答案 0 :(得分:4)

你不能轻易地创建这样的动态方法,但是如果你以不同的方式想到它,你实际上是在为你的路径助手设置参数。 Rails 确实有一个简单的方法:

match "pages/:action", controller: "pages", as: "pages"

pages_path("faq") # => /pages/faq

答案 1 :(得分:1)

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