1

我定义了这样的嵌套资源

resources :item, :only => [:create, :destroy, :update]  do
    resources :item_image, :only => [ :new, :create, :show ,  :destroy, :index]
end

我的路线看起来像这样(rake 路线的输出)

item_item_image_index GET    /item/:item_id/item_image(.:format)     item_image#index
                     POST   /item/:item_id/item_image(.:format)     item_image#create
 new_item_item_image GET    /item/:item_id/item_image/new(.:format) item_image#new
     item_item_image GET    /item/:item_id/item_image/:id(.:format) item_image#show
                     DELETE /item/:item_id/item_image/:id(.:format) item_image#destroy

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

我想在我的一个视图中显示 /item/:item_id/item_image(.: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_images_path/item_item_image_index'”错误

4

2 回答 2

1

你应该试试:

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

或者

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

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

实际上,您应该避免将该模型命名为“ItemImage”。一个项目有图像,这就是你需要知道的。您将获得更好的助手名称,例如“item_images_url”

于 2013-08-03T20:02:39.840 回答
1
item_item_image_index GET    /item/:item_id/item_image(.:format)     item_image#index

在这条路线item_item_image_index中,您需要item_id在 url

让您拥有一个名为 @item 的 Item 模型对象,然后您的链接将是

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

在这里,您需要在路由助手“”之后附加“_path item_item_image_index”。在传递@item变量时,它将采用@item.idasitem_id并完成链接的 URL。

于 2013-08-03T20:02:41.670 回答