Routing Rails 3:将资源路由到另一个名称
我有一个模型的积垢控制器 执行Routing Rails 3:将资源路由到另一个名称,routing,ruby-on-rails-3,Routing,Ruby On Rails 3,我有一个模型的积垢控制器 执行resources:foo允许我在/foo/:id等路径上调用操作 我想为“foo”在另一种语言中的翻译添加一个路径。让我们说“toto”。 所以我希望所有的/toto/:id等路由都能像/foo/:id等路由一样工作 如何实现这一点?您可以添加一个新资源并指定foo作为控制器: resources :toto, :controller=>"foo" 这会将所有操作指向“foo”,但有一个问题。我想如果你使用foo_url或类似的东西,你会遇到页面链接的问题
resources:foo
允许我在/foo/:id
等路径上调用操作
我想为“foo”在另一种语言中的翻译添加一个路径。让我们说“toto”。
所以我希望所有的/toto/:id
等路由都能像/foo/:id
等路由一样工作
如何实现这一点?您可以添加一个新资源并指定foo作为控制器:
resources :toto, :controller=>"foo"
这会将所有操作指向“foo”,但有一个问题。我想如果你使用foo_url或类似的东西,你会遇到页面链接的问题。因此,您必须找到一种基于“request.path”中的控制器动态创建URL的方法。这将允许您重命名用户看到的路径,但在代码中保留控制器的原始名称:
scope(:path_names => { :new => "neu", :edit => "bearbeiten" }) do
resources :categories, :path => "kategorien"
end
您可以使用以下范围实现接近此范围的目标:
scope ':language/' do
resources :foo, controller: 'bar_controller'
end
这将使您的bar_控制器成为anything/foo的资源,其中anything作为:language参数传递
因此:
- 恩努斯/富
- 德乌德福
- ja_JP/foo
所有这些都由bar_控制器通过正常资源映射进行处理,并且您可以在控制器中免费获得参数[:language]。如果我理解正确,您只需要使用另一个路径
resources :foo, path: 'toto'
现在您将拥有:
GET /toto foo#index
GET /toto/:id foo#show
...
关于如何从
views/toto
而不是views/foo
加载视图,有什么想法吗?resources:toto,:controller=>“foo”,:path=>“toto”