rails form_for以及相关模型

时间:2015-03-12 02:32:32

标签: ruby-on-rails form-for

在官方导轨指南中,我遇到了

<%= form_for([@article, @article.comments.build]) do |f| %>
....
<%end %>

我不太清楚form_for的两个参数是代表什么的。我认为第一个参数 @article 是指相关的评论和文章模型,第二个参数似乎是创建一个新评论。

为什么它们在那里以及为什么两个参数都在数组中??

1 个答案:

答案 0 :(得分:3)

此特定代码段演示的内容是嵌套路由

非嵌套路由

form_for调用中,method参数用于确定表单应提交给哪个资源URL。例如,如果我们有form_for(@article),那么表单将提交给&#34;文章&#34;的路线。资源(POST /articlesPUT/PATCH /articles/:id,具体取决于记录是新记录还是现有记录)。

嵌套路由

嵌套路由是URL中具有两级资源的路由。例如,您可能有一个&#34;评论&#34; 嵌套在&#34;文章&#34;资源(因为评论属于文章)。在这种情况下,form_for的路由看起来像POST articles/:article_id/commentsPUT articles/:article_id/comments/:id

数组作为参数

作为form_for调用的参数的数组表示资源将嵌套,因此将表单提交到嵌套路由。

对于深度嵌套的路由(不推荐),您可以继续为数组添加所需的每个级别的对象,例如: [@category, @article, @comment]转到/categories/:category_id/articles/:article_id/comments


在OP显示的特定情况下,它会提交到POST "articles/#{@article.id}/comments",因为@articles.comments.build是一个新评论。