Неопределенный метод в форме - PullRequest
1 голос
/ 10 декабря 2010
class User
    has_one :user_profile
end
class UserProfile
    belongs_to :user
end

Я предоставляю форму для редактирования учетной записи пользователя:

<%= form_for current_user do |f| %>
<%= f.text_field current_user.user_profile.first_name %>
<%= end %>

Но это выдает ошибку:

NoMethodError in Account#edit
undefined method `Andy' for #<User:0x5f375e8>

Почему используется значение first_name?

Как это исправить (без использования частичного)?

Кроме того, если бы кто-то мог направить меня либо к книге, либо к некоторым подробным онлайн-учебникам по использованию форм (и вложенных форм) в Rails, Я был бы очень признателен . Формы сводят меня с ума!

1 Ответ

3 голосов
/ 10 декабря 2010

Первым аргументом помощнику text_field является символ, обозначающий атрибут объекта модели.Так что в вашем случае это должно быть:

<%= form_for current_user.user_profile do |f| %>
  <%= f.text_field :first_name %>
<% end %>

Если вашей форме необходимо редактировать объекты модели User и UserProfile, вам потребуется fields_for для переключения контекста.

<%= form_for current_user do |f| %>
  <%= f.text_field :some_user_attribute %>
  <%= f.fields_for current_user.user_profile do |f| %>
    <%= f.text_field :first_name %>
  <% end %>
<% end %>

См.: http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...