0

私の現在のRailsアプリには、has_one:user_detailのユーザーモデルがあります。現在、seeds.rbファイルでシードされていない限り、ネストされた属性のフィールドを表示するフォームを取得できません。

これが私のユーザーモデルです

class User < ActiveRecord::Base
  has_one :user_detail, :dependent => :destroy
  accepts_nested_attributes_for :user_detail
  attr_accessible :email, :password, :password_confirmation, :access_level, :first_name, :last_name, :user_detail_attributes
  has_secure_password
end

と私のUserDetailモデル

class UserDetail < ActiveRecord::Base
  belongs_to :user
end

と私のフォーム

<%= form_for [:admin, @user] do |f| %>
  <p><%= f.text_field(:name, :placeholder => 'Name')%></p>
  <p><%= f.label(:email) %></p>
  <p><%= f.email_field(:email, :placeholder => 'Your Email')%></p>
  <p><%= f.password_field(:password, :placeholder => 'Choose a password') %></p>
  <p><%= f.password_field(:password_confirmation, :placeholder => 'Confirm Password') %></p>

    <%= f.fields_for :user_detail do |u| %>
      <p><%= u.text_field(:country, :placeholder => 'Country') %></p>
      <p><%= u.text_field(:state, :placeholder => 'State') %></p>
      <p><%= u.text_field(:city, :placeholder => 'City') %></p>
      <p><%= u.text_field(:phone, :placeholder => 'Phone') %> </p>
    <% end %>

  <p><%= submit_tag("Add Owner") %></p>

この
seeds.rbをシードするまで、フィールドは表示されません。

UserDetail.delete_all
owner1detail = UserDetail.create(:zip => "84770",
                              :country => "US",
                              :state => "Ut",
                              :city => "St. George",
                              :user_id => owner1.id
                             )

rake db:seedを実行します。これを実行して既存のユーザーを編集すると、フィールドが表示され、すべて入力されます。ただし、ユーザーを作成すると、フィールドは表示されません。なぜ何かアイデアはありますか?

4

2 に答える 2

1

ビルドをそのようにコントローラーに移動しましたが、機能しました

def new
  @user = User.new
  @user.build_user_detail
end  
于 2012-04-22T20:37:32.713 に答える
0

それを事前に構築してみてください。

<%= form_for [:admin, @user] do |f| %>
  <p><%= f.text_field(:name, :placeholder => 'Name')%></p>
  <p><%= f.label(:email) %></p>
  <p><%= f.email_field(:email, :placeholder => 'Your Email')%></p>
  <p><%= f.password_field(:password, :placeholder => 'Choose a password') %></p>
  <p><%= f.password_field(:password_confirmation, :placeholder => 'Confirm Password') %></p>

    <% @user.user_detail.build if @user.user_detail.nil? %>

    <%= f.fields_for :user_detail do |u| %>
      <p><%= u.text_field(:country, :placeholder => 'Country') %></p>
      <p><%= u.text_field(:state, :placeholder => 'State') %></p>
      <p><%= u.text_field(:city, :placeholder => 'City') %></p>
      <p><%= u.text_field(:phone, :placeholder => 'Phone') %> </p>
    <% end %>

  <p><%= submit_tag("Add Owner") %></p>
于 2012-04-22T06:13:32.900 に答える