Ruby on rails 从'form_for'迁移到新的'form_with'`

Ruby on rails 从'form_for'迁移到新的'form_with'`,ruby-on-rails,devise,form-for,Ruby On Rails,Devise,Form For,如何从的表格转换为的表格,以满足以下要求: <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %> 我查看了Rails的表单和文档,但没有找到任何相关的示例 谢谢 试试看 =带模型的表单:资源,范围:资源\u名称, url:密码路径(资源名称),方法::post do | f| 另外,form_with不会为元

如何从的表格转换为的表格,以满足以下要求:

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

我查看了Rails的
表单和
文档,但没有找到任何相关的示例

谢谢

试试看

=带模型的表单:资源,范围:资源\u名称,
url:密码路径(资源名称),方法::post do | f|
另外,
form_with
不会为元素生成类和ID,如果您需要,请手动添加它们


文档比目前的指南要详细得多。

form\u with
具有
范围:
选项,可更改输入名称前缀、ID和标签的for属性。据我所知,它与
As:
选项的
表单的
功能完全相同

:作用域
-为输入字段名称加前缀的作用域,以及如何加前缀 提交的参数在控制器中分组

# 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>
#添加作用域将作为输入字段名称的前缀:
# =>

因此,等价的调用是:

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


您可以在这里找到很多示例:在Rails 5.1中引入form_with之前,它的功能通常在form_标记和form_for之间进行分割。这两种方法现在都已被弃用。无论使用
form\u for
的代码是什么,都应该使用
form\u with
我知道@Thang,但是它们的语法有点不同。您缺少
as:resource\u name
选项。我猜这是Desive提供的,它使用它来使表单键通用,而不是从模型上取下键。感谢您的输入@事实上,这正是我找不到任何例子的部分。干杯