Ruby on rails 嵌套的_属性字段未显示

Ruby on rails 嵌套的_属性字段未显示,ruby-on-rails,nested-attributes,Ruby On Rails,Nested Attributes,在我当前的rails应用程序中,我有一个用户模型,它有一个:User\u detail。目前,我无法让表单显示嵌套属性的字段,除非我已经将其与seeds.rb文件一起设定种子 这是我的用户模型 class User < ActiveRecord::Base has_one :user_detail, :dependent => :destroy accepts_nested_attributes_for :user_detail attr_accessible :emai

在我当前的rails应用程序中,我有一个用户模型,它有一个:User\u 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
我运行rake db:seed。一旦我这样做并编辑了一个现有用户,字段就会显示出来,并全部填写。但是,在创建用户时,它们不会出现。知道为什么吗?

试着预先构建它

<%= 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>

“名称”)%%>

“您的电子邮件”)%%>

“选择密码”)%%>

“确认密码”)%%>

“国家”)%%>

“状态”)%%>

“城市”)%%>

“电话”)%%>


我像这样将构建移到了我的控制器上,它成功了

def new
  @user = User.new
  @user.build_user_detail
end  

我像你说的那样添加了它,现在我得到了nil:NilClass的错误未定义方法'build'。有什么想法吗?它甚至在rails控制台中给了我这个错误,当我执行user=user.new,然后执行user.user\u detail.build时,我得到了未定义的方法“build”
UserDetail.delete_all
owner1detail = UserDetail.create(:zip => "84770",
                              :country => "US",
                              :state => "Ut",
                              :city => "St. George",
                              :user_id => owner1.id
                             )
<%= 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>
def new
  @user = User.new
  @user.build_user_detail
end