3

ユーザーフォームを取得して、ユーザーが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 %>
4

3 に答える 3

6

company属性はそうではUserないnilので、コントローラーまたはフォームのいずれかで、次のように作成します。

<% user.build_company if user.company.nil? %>
<%= f.fields_for :company do |company_form| %>
...
于 2011-03-24T19:54:22.797 に答える
5

ビューやコントローラーではなく、モデルでこれを行う方がよい場合があります。

class User
  # Blah blah blah
  def profile
    super || build_profile
  end
end
于 2012-06-21T21:54:20.177 に答える
0

Zabbaからの上記の解決策は、私にとっては次の場合にのみ機能しました。

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

Othwerise、ビューは「ユーザー」が何であるかを知りませんでした

于 2011-10-14T21:03:22.207 に答える