从“form_for”迁移到新的“form_with”

Migrating from `form_for` over to the new `form_with`

如何从 form_for 转换为 form_with 以获得以下结果:

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

我已查看 Rails' form_with 文档,但未找到任何相关示例。

谢谢!

尝试

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

另外 form_with 不会为元素生成 类 和 id,如果您需要这些 - 手动添加它们

文档 in api 目前比指南中的详细得多。

form_with 具有 scope: 选项,可更改输入名称前缀、id 和标签的 for 属性。据我所知,它与 form_for.

as: 选项完全相同

:scope - The scope to prefix input field names with and thereby how the submitted parameters are grouped in controllers.

# 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| %>