Как мне узнать, какой файл редактировать и что делать из этого сообщения об ошибке? - PullRequest
0 голосов
/ 05 июня 2019

Я добавил имя столбца в таблицу пользователей, которая основана на геме rails / devise.Когда я нажимаю на вкладку администратора, которая показывает список пользователей, я затем нажимаю на имя пользователя, чтобы открыть страницу редактирования для этого профиля пользователя.Я получаю следующее сообщение.

Отображение ~ / 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. Как мне выяснить, где внести изменения, чтобы рельсы поняли, что name_field - это поле имени (да, я посмотрел на миграцию, а name - в схеме и имеетбыли перенесены).

  2. Как мне получить это поле как определенное поле?Я не могу понять, вуду, который создает это name_field, поэтому я не вижу, где внести изменения.

  3. Я использовал скаффолд для создания пользовательских страниц администратора.Почему он не создал это правильно?

1 Ответ

1 голос
/ 05 июня 2019

name_field не является допустимым помощником формы, поскольку Rails не генерирует динамически помощники формы на основе имен столбцов. помощники форм Rail по большей части основаны на допустимых типах ввода HTML5 .

Так что, когда вы видите что-то подобное в форме разработки ...

<%= 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...