[英]form_with model parameter for nested resources Rails
嗨,我是Rails(和Stackoverflow)的新手,請原諒我的問題。
我對<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>
感到困惑<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>
<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>
在“ Rails入門”指南中。
該指南提到[@article, @article.comments.build]
“構建嵌套路由”,但是它是如何做到的?
如edgeguides model: @article
將實際對象@article
傳遞到表單中。 那么如何將嵌套路由傳遞給model參數呢?
在此先感謝您的指導和耐心!
UPDATE
經過大量研究,我取得了以下進展
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
的實例?
在edgeguides
,僅提供名稱空間路由示例,而不提供嵌套路由示例。
當您傳遞[@article, @article.comments.build]
,它會將關聯的對象comment
的URL當作嵌套路由來考慮。
這是form_with
優於form_for
優勢
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.