Модель в форме с - PullRequest
       11

Модель в форме с

0 голосов
/ 01 мая 2020

Я читал руководство по ruby на рельсах. Я застрял здесь: https://guides.rubyonrails.org/getting_started.html#generating -a-controller

Я сомневаюсь, как они использовали form_with(model: [ @article, @article.comments.build ], local: true)

В этом, что означает атрибут модели, а также каково значение build в @article.comments.build.

Может кто-нибудь, пожалуйста, объясните мне это.

1 Ответ

2 голосов
/ 01 мая 2020

form_with model: ... и form_for ... оба принимают ресурсно-ориентированный стиль .

Ваш пример:

[@article, @article.comments.build]

Будет переведено (при условии, что статья с идентификатором 1):

POST /articles/1/comments

Передача массива в качестве ресурса потребует вложенного ресурса или ресурса с пространством имен. Последний элемент в массиве должен быть ресурсом для работы. Если этот последний элемент является новой записью, форма будет использовать POST, если это существующий ресурс, будет использоваться PUT.

Вот несколько примеров, чтобы прояснить ситуацию:

[@existing_article]
# PUT /articles/1

[@new_article]
# POST /articles

[@article, @existing_comment]
# PUT /articles/1/comments/1

[@article, @new_comment]
# POST /articles/1/comments

[:admin, @existing_article]
# PUT /admin/articles/1

[:admin, @new_article]
# POST /admin/articles

[@article, :admin, @existing_comment]
# PUT /articles/1/admin/comments/1

[@article, :admin, @new_comment]
# POST /articles/1/admin/comments

В вашем сценарии @article.comments.build устанавливает для субъекта построителя формы комментарий (потому что это последний элемент в массиве) и определяет путь / URL и метод, используемый при отправке формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...