Миграция из `form_for` в новую` form_with` - PullRequest
1 голос
/ 23 января 2020

Как можно go преобразовать form_for в form_with для следующего:

<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %>

Я просмотрел документацию Rails form_with, но не нашел ни одного соответствующие примеры.

Спасибо!

Ответы [ 2 ]

1 голос
/ 23 января 2020

form_with имеет параметр scope:, который изменяет префиксы имени входа, идентификаторы и атрибут for меток. Насколько я могу судить, он делает то же самое, что и опция as: для form_for.

:scope - область действия с префиксами имен полей ввода и, следовательно, как переданные параметры сгруппированы в контроллеры.

# Adding a scope prefixes the input field names:
<%= form_with scope: :post, url: posts_path do |form| %>
  <%= form.text_field :title %>
<% end %>
# =>
<form action="/posts" method="post" data-remote="true">
  <input type="text" name="post[title]">
</form>

https://api.rubyonrails.org/v6.0.0/classes/ActionView/Helpers/FormHelper.html#method -i-form_with

Итак, эквивалентный вызов:

<%= form_with(
      model: resource, 
      scope: resource_name, 
      url: password_path(resource_name), 
      method: :post
    ) do |f| %>
0 голосов
/ 23 января 2020

Попробуйте

= form_with model: resource, scope: resource_name,
            url: password_path(resource_name), method: :post do |f|

также form_with не генерирует классы и идентификаторы для элементов, если они вам нужны - добавьте их вручную

Документация в API is гораздо более подробный, чем в руководствах на данный момент.

...