我有一个关于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 %>
这会产生一个错误,“为nil调用id,这将错误地依此类推。”我也试过
<% form_for @article, @comment do |f| %>
它正确地呈现,但将f.text_area与文章的“文本”字段而不是评论的字段相关联,并在该文本区域中显示article.text属性的html。所以我似乎也错了。我想要的是一个表单,它的'submit‘将调用CommentsController上的create操作,参数中有一个评论,例如一个对/ article_id /1/comments的post请求。
我的问题的第二部分是,创建comment实例的最佳方法是什么?我在ArticlesController的显示操作中创建了一个@comment,因此form_for帮助器的作用域中将有一个comment对象。然后,在CommentsController的create操作中,我使用从form_for传入的参数创建了新的@comment。
谢谢!
https://stackoverflow.com/questions/2034700
复制相似问题