Rails控制器名称带有破折号而不是下划线

时间:2011-03-10 20:13:30

标签: ruby-on-rails ruby-on-rails-3 url seo

当引用控制器时,是否可以强制Rails使用短划线( - )而不是下划线。

目前存在一个名为Inflector的{​​{1}}的不错功能。它允许非常好的永久链接删除所有特殊字符并用短划线代替...

但是,当使用具有多个单词的控制器(例如parameterize)时,您可以定义路线:

contact_methods_controller.rb

这会创建一个resources :contact_methods (不是/contact_methods)的地图。当我混合这两个时,我得到了丑陋的URL,如:

/contact-methods

我想让Rails地图控制器使用破折号而不是下划线。我的所有研究都表示要单独映射每个控制器:

/contact_methods/1-preferred-email

但在我看来,这真的很愚蠢,如果我正在嵌套资源,它会变得混乱......我不应该将它们定义为自定义路由。 match 'contact-methods(/:action)' => 'contact_methods' 中是否有自动重写这些内容的设置?我找不到一个......

1 个答案:

答案 0 :(得分:11)

在你的route.rb

resources "contact-methods", :controller => :contact_methods, :as => :contact_methods

修改:您必须指定:as => ...路径,否则ActionDispatch会引发合适...