Rails 3:将资源路由到另一个名称

glm*_*ndr 23 routing ruby-on-rails-3

我有一个模型的CRUD控制器.

这样做resources :foo可以让我的路线/foo/:id,等等调用行动.

我想添加一个用另一种语言翻译'foo'的路线.我们来说'toto'.所以我希望所有/toto/:id等等路线的行为与/foo/:id路线等完全相同.

我怎么能实现这一目标?

joh*_*ley 38

您可以添加新资源并将foo指定为控制器:

resources :toto, :controller=>"foo"
Run Code Online (Sandbox Code Playgroud)

这会将所有动作指向"foo",但是有一个问题.如果您使用foo_url或类似的东西,我认为您将遇到页面上的链接问题.因此,您必须找到一种基于"request.path"中的控制器以动态方式创建URL的方法.

  • `资源 :toto, :controller=>"foo", :path => "toto"` (2认同)

fis*_*ben 23

这将允许您重命名用户看到的路径,但在代码中保留控制器的原始名称:

scope(:path_names => { :new => "neu", :edit => "bearbeiten" }) do
  resources :categories, :path => "kategorien"
end
Run Code Online (Sandbox Code Playgroud)

来自Ruby on Rails指南


dda*_*son 5

如果我对您的理解正确,则只想使用其他路径即可。

resources :foo, path: 'toto'
Run Code Online (Sandbox Code Playgroud)

现在您将拥有:

GET /toto          foo#index
GET /toto/:id      foo#show
...
Run Code Online (Sandbox Code Playgroud)