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) %>