从“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| %>
如何从 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| %>