我必须解决以下问题:
如果我想遵循 Rails 命名约定,我必须使用模型名称的复数形式作为我的 Controller 名称。
例子:
rails g scaffold_controller Content
在这种情况下,我有一个模型(Content),之前的命令将生成一个名为 Contents 的 Controller 。
如果我有一个德语网站并且我想使用 site.tld/inhalt/something-something 而不是 site.tld/contents/something-something.
我在考虑两种解决方案:
a,当我生成 Controller 时使用德语版本的单词(afaik scaffold_controller 生成器不支持它
b,用英文生成整个站点(模型, Controller )并将特定请求路由到具有命名路由的特定 Controller ,例如:
match 'logout', :to => 'sessions#destroy'
在这种情况下,我不能使用 RESTful 路由,例如:
resources :products
你怎么看?
最佳答案
您可以使用路由配置来更改与此 Controller 匹配的 url:
resources :contents, :path_names => { :new => 'neue', :edit => 'bearbeiten' }, :path => 'inhalt'
您 View 中的 contents_path
方法仍然有效,但它会根据需要输出 /inhalt
并且匹配。 /contents
路径不会匹配。因此,如果您调用 edit_content_path(@content)
,您将获得类似于 /inhalt/1/bearbeiten
的内容。
参见 Rails routing guide了解更多详情。
关于ruby-on-rails - 在 rails3 中使用非英语 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3916198/