嗨,我是Rails(和Stackoverflow)的新手,请原谅我的问题。
在“ Rails入门”指南中,我对<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>
感到困惑。
[@article, @article.comments.build]
中提到的guide是“构建嵌套路线”,但是它是如何做到的呢?
如edgeguides中所述,model: @article
将实际对象@article
传递到表单中。那么如何将嵌套路由传递给模型参数呢?
提前感谢您的指导和耐心!
更新
经过大量研究,我取得了以下进展
build
是new
的别名。
[@article, @article.comments.build]
是一个数组
model
接受一个类的实例(在这种情况下为comment
),并推断范围(:comment
)和url(article_comments_path(@article)
)。因为传入的实例是新实例,所以rails会将方法推断为post
Source
那么在告诉Rails正确的URL(article_comments_path(@article))的同时,哈希[@article, @article.comments.build]
如何返回类comment
的实例?
答案 0 :(得分:0)
在edgeguides
中,仅提供名称空间路由示例,而不提供嵌套路由示例。
传递[@article, @article.comments.build]
时,它会将关联对象comment
的URL视为嵌套路由。
这是form_with
比form_for
的优势