Rails:正确路由命名空间资源

nev*_*vyn 6 ruby-on-rails

如果您将资源映射添加到routes.rbin Rails 2.3中的命名空间,那么如何使link_to(以及form_for等)理解它应该获取命名空间控制器而不是根命名空间中的控制器?

例如...

有了这个routes.rb:

map.namespace :admin do |admin|
  admin.resources :opt_in_users
end
Run Code Online (Sandbox Code Playgroud)

这在视图中:

<%= link_to @anOptInUser %>
Run Code Online (Sandbox Code Playgroud)

link_to应该使用link_for_admin_opt_in_user,而是它尝试使用link_for_opt_in_user,这将失败.

Tor*_*rud 7

对于命名空间资源,与嵌套资源一样,您可以使用带符号的数组:

link_to 'Click here', [:admin, @opt_in_user]
Run Code Online (Sandbox Code Playgroud)

要么

form_for [:admin, @opt_in_user] do |form| ....
Run Code Online (Sandbox Code Playgroud)