Как заставить устройство работать с accepts_nested_attributes_for в имеет одно отношение? - PullRequest
3 голосов
/ 24 марта 2011

Я пытаюсь получить мою форму пользователя, чтобы он также мог одновременно заполнять профиль своей компании через форму form_for.По некоторым причинам это не показывает поля компании.Вот мой код для контроллера и макетов.

class User < ActiveRecord::Base
  attr_accessible :company_attributes

  has_one :company
  accepts_nested_attributes_for :company
end

class Company < ActiveRecord::Base
  belongs_to :user

  # Validation
  validates :name, :presence => true
end

<%= f.fields_for :company do |company_form| %>
  <div class="field">
    <%= company_form.label :name, "Company Name" %><br />
    <%= company_form.text_field :name %>
  </div>
<% end %>

Ответы [ 3 ]

6 голосов
/ 24 марта 2011

Атрибут company User должен быть не- nil, поэтому либо в контроллере, либо в форме создайте его:

<% user.build_company if user.company.nil? %>
<%= f.fields_for :company do |company_form| %>
...
4 голосов
/ 22 июня 2012

Может быть, лучше сделать это в модели, чем в представлении или контроллере.

class User
  # Blah blah blah
  def profile
    super || build_profile
  end
end
0 голосов
/ 15 октября 2011

Вышеупомянутое решение от Zabba работало только для меня с:

<% @user.build_profile if @user.profile.nil? %>

Othwerise, представление не представляло, что такое «пользователь»

...