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

我定义了这样的嵌套资源

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 

我试过这个:

  

还有这个

  

两者都不起作用

我得到“未定义的局部变量或方法`item_images_path / item_item_image_index’”错误

你应该试试:

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

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

在此路线item_item_image_index ,您需要在url中添加item_id

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

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

在这里你需要在路径助手“ item_item_image_index ”之后追加’_path’。 在传递@item变量时,它会将@item.id作为item_id并完成链接的URL。