我有一个关于 form _ for 和嵌套资源的两部分问题。假设我正在写一个博客引擎,我想把一条评论与一篇文章联系起来。我将嵌套资源定义如下:
map.resources :articles do |articles|
articles.resources :comments
end
评论表单位于文章的 show.html.erb 视图中,位于文章本身之下,例如:
<%= render :partial => "articles/article" %>
<% form_for([ :article, @comment]) do |f| %>
<%= f.text_area :text %>
<%= submit_tag "Submit" %>
<% end %>
这样会出现一个错误,“调用 id 为 nil,这样会出错等等”,我也尝试过
<% form_for @article, @comment do |f| %>
它呈现正确,但是将 f.text _ area 与文章的“ text”字段而不是注释字段联系起来,并为该文本区域中的 artile.text 属性呈现 html。看来我也搞错了。我想要的是一个表单,它的“提交”将调用 CommentsController 上的 create 操作,在 params 中包含 article _ id,例如对/article/1/comments 的发帖请求。
我的问题的第二部分是,首先创建注释实例的最佳方式是什么?我正在 ArticlesController 的 show 操作中创建一个@注释,因此一个注释对象将在 form _ for helper 的范围内。然后在 CommentsController 的 create 操作中,我使用 form _ for 传入的参数创建新的@comments。
谢谢!