【发布时间】:2011-01-03 07:56:18
【问题描述】:
我有一个关于 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 %>
这会给出一个错误,“Called id for nil, which would wrongly etc.”我也试过了
<% form_for @article, @comment do |f| %>
正确呈现但将 f.text_area 与文章的“文本”字段而不是评论相关联,并在该文本区域中显示 article.text 属性的 html。所以我似乎也有这个错误。我想要的是一个表单,它的“提交”将调用 CommentsController 上的创建操作,参数中有一个 article_id,例如对 /articles/1/cmets 的发布请求。
我的问题的第二部分是,创建评论实例的最佳方法是什么?我在 ArticlesController 的 show 操作中创建了一个 @comment,因此一个评论对象将在 form_for 助手的范围内。然后在 CommentsController 的创建操作中,我使用从 form_for 传入的参数创建新的@comment。
谢谢!
【问题讨论】:
标签: ruby-on-rails form-for nested-resources