我正在关注本教程-http: //tutorials.jumpstartlab.com/projects/blogger.html#i2: -adding- comments。它正在构建一个示例博客应用程序,到目前为止已经有一个Article
模型并正在添加一个Comment
模型。一个Article
has_many
评论。
他们希望能够使用文章页面上的表单创建评论:
<h3>Post a Comment</h3>
<%= form_for [ @article, @comment ] do |f| %>
<p>
<%= f.label :author_name %><br/>
<%= f.text_field :author_name %>
</p>
<p>
<%= f.label :body %><br/>
<%= f.text_area :body %>
</p>
<p>
<%= f.submit 'Submit' %>
</p>
<% end %>
我不明白这种形式是如何工作的。它将两个对象绑定到表单,并说它将提交给article_comments_path
,将提交POST
给comments#create
。
这是如何运作的?它有两个对象时如何知道该怎么办?数组中对象的顺序重要吗?你可以有两个以上的物体吗?
您可能将使用嵌套资源:
resources :articles do
resources :comments
end
[ @article, @comment ]
是一个将构建嵌套路由的数组。喜欢:
/articles/1/comments
article_comments_path
映射到index
动作(GET)和create
动作(POST)
这样做rake routes
,看看我说的:
article_comments_path GET /articles/:article_id/comments(.:format) comments#index
POST /articles/:article_id/comments(.:format) comments#create
因此,实质上,您[ @article, @comment ]
在嵌套资源时使用它来创建路由助手。对象的顺序很重要article_comments_path
,而不重要comment_articles_path
。
我是否可以将两个以上的对象绑定到表单,这取决于您的资源嵌套的深度
更新:
您正在使用表格。和形式是要么create
或update
对象取决于对象是否存在。该submit
按钮将触发该操作。该文章总结说还不错
“当用户单击表单上的提交时,Rails会在关联的控制器中调用create(用于新记录)或update(用于现有记录)操作。默认情况下,表单是使用HTTP POST命令提交的,并且所有表单中输入的信息将在称为params的哈希中提供,该哈希可供控制器使用。”
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句