Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 如何使用RubyonRails命名路由_Ruby On Rails_Ruby_Routes - Fatal编程技术网

Ruby on rails 如何使用RubyonRails命名路由

Ruby on rails 如何使用RubyonRails命名路由,ruby-on-rails,ruby,routes,Ruby On Rails,Ruby,Routes,我这样定义了嵌套资源 resources :item, :only => [:create, :destroy, :update] do resources :item_image, :only => [ :new, :create, :show , :destroy, :index] end 我的路由如下所示(rake路由的输出) 我认为输出的第一列是“命名路由” 我想在我的一个视图中显示/item/:item_id/item_图像(:format)的路径 item_

我这样定义了嵌套资源

resources :item, :only => [:create, :destroy, :update]  do
    resources :item_image, :only => [ :new, :create, :show ,  :destroy, :index]
end
我的路由如下所示(rake路由的输出)

我认为输出的第一列是“命名路由”

我想在我的一个视图中显示/item/:item_id/item_图像(:format)的路径

item_item_image_index GET    /item/:item_id/item_image(.:format)     item_image#index
我试过这个:

<%= link_to "users", item_item_image_index  %>

还有这个

<%= link_to "users", item_images_path  %>

两者都不起作用

我遇到“未定义的局部变量或方法`item\u images\u path/item\u item\u images\u index'”错误

您应该尝试:

<%= link_to "users", item_item_image_index_url(@item) %>




不要忘记url需要一个:item_id,因此需要将一个item作为参数传递

实际上,您应该避免将该模型命名为“ItemImage”。一个项目有图像,这是你需要知道的。您将获得更好的帮助器名称,如“item\u images\u url”

在这个路径
item\u item\u image\u index
中,您需要在url中添加一个
item\u id

让您有一个名为@Item的Item模型对象,那么您的链接将

<%= link_to 'users', item_item_image_index_path(@item) %>


在这里,您需要在路由助手“
item\u item\u image\u index
”之后附加“\u path”。在传递
@item
变量时,它会将
@item.id
作为
item\u id
并完成链接的URL。

谢谢,这很有效。还有一个问题,为什么我的路线中的删除后路线没有自动生成路径名?没关系,我自己就知道了。它们都有相同的路径,唯一的区别是HTTP动词。没错。url帮助器特别适合锚定标记。POST/PUT/DELETE方法通常涉及一个表单,您必须在url旁边特别声明(取决于表单帮助程序)HTTP动词。(我假设您没有使用可怕的Rails js hacks作为锚定标记:remote=>true)
<%= link_to "users", item_item_images_url(@item)  %>
<%= link_to "users", item_item_image_index_path(@item)  %>
<%= link_to "users", item_item_images_path(@item)  %>
item_item_image_index GET    /item/:item_id/item_image(.:format)     item_image#index
<%= link_to 'users', item_item_image_index_path(@item) %>