如何在rails命名路由上使用ruby

时间:2013-08-03 19:55:34

标签: ruby-on-rails ruby routes

我定义了像这样的嵌套资源

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

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

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'”错误

2 个答案:

答案 0 :(得分: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”

答案 1 :(得分:1)

item_item_image_index GET    /item/:item_id/item_image(.:format)     item_image#index

在此路线item_item_image_index中,您需要在网址<{p}中添加item_id

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

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

此处您需要在路径助手“item_item_image_index”之后附加“_path”。在传递@item变量时,@item.iditem_id作为{{1}}并完成链接的网址。

相关问题