Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:名称空间资源的正确路由_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails:名称空间资源的正确路由

Ruby on rails Rails:名称空间资源的正确路由,ruby-on-rails,Ruby On Rails,如果在Rails 2.3中向routes.rb中的命名空间添加资源映射,如何使link_链接到(以及form_for,等等)理解它应该获得命名空间控制器,而不是根命名空间中的控制器 例如 在routes.rb中使用此选项: map.namespace :admin do |admin| admin.resources :opt_in_users end 这一观点: <%= link_to @anOptInUser %> 该link\u to应使用link\u作为\u ad

如果在Rails 2.3中向
routes.rb
中的命名空间添加资源映射,如何使
link_链接到
(以及
form_for
,等等)理解它应该获得命名空间控制器,而不是根命名空间中的控制器

例如

routes.rb中使用此选项:

map.namespace :admin do |admin|
  admin.resources :opt_in_users
end
这一观点:

<%= link_to @anOptInUser %>


link\u to
应使用
link\u作为\u admin\u opt\u in\u user
,但它尝试使用
link\u作为\u opt\u in\u user
,但失败。

url\u的rails文档表明您必须明确地调用它:

如果您传递的不是散列,而是记录 (如活动记录或活动记录) 资源)作为选项参数, 您将触发的命名路由 那张唱片。查找将在上进行 类的名称。所以通过一个 车间对象将尝试使用 车间沿着小路走。如果你有 嵌套路由,例如 管理员\u车间\u路径您必须 明确地说(这是不可能的) 用于url(用于猜测该路线)


(from)

Rails可以接受一组对象,然后将这些对象映射到命名路由中

e、 g

您将获得到
/articles/@article.to_-param/comments/@article.to_-param

这可以用在
表格中,用于
和其他地方

使用:

link_to '...', admin_opt_in_user_path(@anOptInUser)
收集:

admin_opt_in_users_path
还可以添加编辑前缀和新前缀


使用表单时,请确保在新操作中传递admin\u opt\u in\u users\u path,在编辑操作中传递admin\u opt\u in\u user\u path(@anOptInUser)。

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

link_to 'Click here', [:admin, @opt_in_user]


是的,这就是我最后做的…谢谢你确认这是唯一的方法!(尽管我不同意,如果只有一条路径,url_就不可能猜到它!)它仍然适用于Rails 3.1.3。
form_for [:admin, @opt_in_user] do |form| ....