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

Ruby on rails 我可以在rails中使用动态命名路由吗?,ruby-on-rails,Ruby On Rails,我有一个页面控制器,其中我支持3个静态页面(例如:aboutus、faq和home)。我在控制器内没有任何操作,只有适当的视图,因此添加新页面将很容易 我使用了默认路线: 匹配:控制器(/:操作(/:id))(:格式)' 现在可以通过以下方式访问我的页面:'http://localhost:3000/pages/faq"(或其他任何一页) 我想给出这些路由的名称,因此当我从其他页面创建指向它们的链接时,我会使用以下内容: link_to 'FAQ' faq_path' 不如 链接到“常见问题解

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

我使用了默认路线: 匹配:控制器(/:操作(/:id))(:格式)'

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

我想给出这些路由的名称,因此当我从其他页面创建指向它们的链接时,我会使用以下内容:

link_to 'FAQ' faq_path'
不如 链接到“常见问题解答”/“页面/常见问题解答”

可以创建“动态命名路由”吗?我试过这样的方法:

match 'pages/:action' => 'pages#:action', :as => :action
但它并没有真正起作用

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
将为您提供以下帮助:

home_path or home_url
faq_path or faq_url
aboutus_path or aboutus_url

您无法轻松创建这样的动态方法,但如果您以另一种方式考虑,您实际上是在参数化您的路径帮助器。Rails确实有一种简单的方法来实现这一点:

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

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

您无法轻松创建这样的动态方法,但如果您以另一种方式考虑,您实际上是在参数化您的路径帮助器。Rails确实有一种简单的方法来实现这一点:

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

pages_path("faq") # => /pages/faq
这远远不是“动态命名”。如果你有几十个这样的名字,除非没有其他方法,否则你不会真的想把它们都列出来。这远远不是“动态命名”。如果你有几十个,你不会真的想把它们都列出来,除非没有其他办法。