URL 助手实际上接受对象来为关联创建路由。意思是,假设您在项目中有一条用于评论的嵌套路由,
resources :items do
resources :comments
end
你可以link_to
的new_item_comments_path(item)
。
该方法new_item_comments_path(item)
基于new_item_comments
路由创建一个字符串 URL,您可以输入该 URLlink_to
以创建一个 HTML<a>
标记。
更清楚地说,在您看来,您将拥有:
<%= link_to 'View', item %>
<%= link_to 'Edit', edit_item_path(item) %>
<%= link_to 'Delete', item, method: :delete, data: { confirm: 'Are you sure?' } %>
<%= link_to 'Add Comment', new_item_comments_path(item) #-> (instead of ???) %>
在这种情况下,item
您传递的是对当前项目的引用,它允许 URL 助手从路由中为其创建一个 URL。
Rails 路由指南对您来说应该是一本有用的读物。
现在假设您的 Comment 控制器在正确的位置分配了正确的内容。你似乎已经明白了,但为了清楚起见我会解释一下(以及未来的访客)
class CommentsController < ApplicationController
# GET /item/:item_id/comments/new
def new
@comment = Comment.new
@item = Item.find(params[:item_id])
@comment.item = @item
# render
end
# POST /item/:item_id/comments
def create
@comment = Comment.new(params[:comment])
@item = Item.find(params[:item_id])
@comment.item = @item
# if @comment.save blah
end
end