Ruby on rails 具有关联模型的rails form_

Ruby on rails 具有关联模型的rails form_,ruby-on-rails,form-for,Ruby On Rails,Form For,在官方的rails指南中,我遇到了 <%= form_for([@article, @article.comments.build]) do |f| %> .... <%end %> .... 我不太确定form_的两个参数代表什么。我认为第一个参数@article是指评论和文章的关联模型,第二个参数似乎是创建新评论 为什么它们在那里,为什么两个参数都在一个数组中?这个特定的代码片段演示的是嵌套路由 非嵌套路由 在调用的form_中,method参数用于确定表单应提

在官方的rails指南中,我遇到了

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

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


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

这个特定的代码片段演示的是嵌套路由

非嵌套路由 在调用的
form_中,method参数用于确定表单应提交到哪个资源URL。例如,如果我们有(@article)
form_,那么表单将提交到“article”资源的路由(根据记录是新的还是现有的,
POST/articles
PUT/PATCH/articles/:id

嵌套路由 嵌套路由是在URL中具有两级资源的路由。例如,您可能有一个嵌套在“article”资源下的“comment”资源(因为注释属于article)。在这种情况下,
form\u的路由看起来像
POST articles/:article\u id/comments
PUT articles/:article\u id/comments/:id

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

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


在OP显示的特定情况下,它将提交到
发布的“articles/#{@article.id}/comments”
,因为
@articles.comments.build
是一个新的注释