我如何知道要编辑哪个文件以及如何从此错误消息中进行操作?

How do I know what file to edit and what to do from this error message?

我在 rails/devise gem 的基础上添加了用户 table 的列名。当我单击显示用户列表的管理选项卡时,然后单击用户名以打开该用户配置文件的编辑页面。我收到以下消息。

显示 ~/rails/blog/app/views/users/_user.html.erb 第 8 行出现的位置:

undefined method `name_field' for #<ActionView::Helpers::FormBuilder:0x007fc716efd730>
Extracted source (around line #8):
6
7
8
9
10
11

  <div class="field">
    <%= f.label :name %><br />
    <%= f.name_field :name, autofocus: true, autocomplete: "name" %>
  </div>

  <div class="field">

Trace of template inclusion: app/views/users/edit.html.erb

我尝试添加:

def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit(:name, :email, :password) }
    devise_parameter_sanitizer.permit(:account_update) { |u| u.permit(:name, :email, :password, :current_password) }
    devise_parameter_sanitizer.permit(:edit_profile) { |u| u.permit(:name, :email, :password, :current_password) }

到应用程序控制器,但仍然出现相同的错误。

  1. 如何弄清楚在哪里进行修改以使rails理解name_field是关于名称的字段(是的,我查看了迁移和名称在架构中并已迁移)。

  2. 如何让它接受该字段作为定义的字段?我无法弄清楚创建那个 name_field 的巫术,所以我看不到在哪里进行更改。

  3. 我使用脚手架创建了用户管理页面。为什么没有正确创建它?

name_field 不是有效的表单助手,因为 Rails 不会根据列名动态生成表单助手。铁路form helpers, for the most part, are based off of valid HTML5 input types

所以当你在你的设计表格中看到这样的东西时......

<%= f.email_field :email %>

f.email_field 引用电子邮件 HTML 输入类型,:email 引用属性。上面的助手生成 html...

<input type="email" name="user[email]">

所以,您的表单字段应该使用 text_field 而不是...

<div class="field">
  <%= f.label :name %><br />
  <%= f.text_field :name, autofocus: true, autocomplete: "name" %>
</div>