Не выводится через fields_for при использовании отношения один к одному - PullRequest
1 голос
/ 22 марта 2011

У меня возникли некоторые проблемы при попытке * fields_for * создать вывод при попытке отобразить мою модель пользователя и профиля в одной форме, они используют отношения * has_one * и * own_to *.

Итак, вот выдержки из верхней части модели классов:

class User < ActiveRecord::Base
  has_one :profile
  accepts_nested_attributes_for :profile

class Profile < ActiveRecord::Base
  belongs_to :user

Контроллер довольно прост и стандартен:

  def new
    @user = User.new
  end

  def edit
    @user = User.find(params[:id])
  end

И вот фрагмент из поля зрения в том виде, в каком он сейчас стоит:

<%= form_for(@user) do |f| %>

  <% f.fields_for :profile do |profile_form| %>
    <div class="field">
      <%= profile_form.label :name %><br />
      <%= profile_form.text_field :name %>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :email %><br />
    <%= f.text_field :email %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

Я пробовал другие вещи, например:

 <% fields_for @user.profile do |profile_form| %>

И все работает нормально, если я вручную добавляю поле:

  <div class="field">
    <label for="user_name">Name</label><br>
    <input id="user_name" name="user[profile_attributes][name]" size="30" type="text" value="<%= @user.profile.name %>">
  </div>

Стоит отметить, что я довольно новичок в рельсах и не совсем уверен, как эти функции работают под капотом, хотя я прочитал документацию и руководство . Также в моих поисках много примеров fields_for отношения один-ко-многим, так что, возможно, я поступаю об этом неправильно?

Вся помощь, советы и дальнейшее чтение высоко ценится: -)

Приветствия

Sam

1 Ответ

5 голосов
/ 22 марта 2011

В вашем коде:

<% f.fields_for :profile do |profile_form| %>

Разве это не нужно писать так (из-за нового поведения в Rails 3):

<%= f.fields_for :profile do |profile_form| %>
...