ruby-on-rails - 在 rails3 中使用非英语 Controller

标签 ruby-on-rails ruby

我必须解决以下问题:

如果我想遵循 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/

相关文章:

ruby-on-rails - Rails 检查表单是否完整填写

ruby-on-rails - Rails - 使用 TreSTLe/admin 显示关联记录

ruby-on-rails - ruby 检查当前日期是否在日期记录内

ruby - 如何使用 fork 的 Ruby 进程进行进程间锁定?

ruby - 使用 Prawn Ruby 库时的当前光标位置

mysql - Rails Mysql ActiveRecord::ConnectionNotEstablished

css - form_for 显示为 block 和内联元素(ruby on rails,css)

ruby-on-rails - 连接表关系的简单表单复选框

arrays - 如何将子数组添加到自身? ruby

c++ - 在 Ruby 和 C++ 中左移 16 位