rails 4 has_one 个嵌套表单仍未构建

rails 4 has_one nested forms not building still

我已经查看了 Whosebug 和其他地方关于这个相当普遍的问题的所有帖子,但我还没有找到答案。本质上我的嵌套表单没有构建,因此在我显示页面时不可见。

这是我的用户控制器的相关部分,users_controller.rb

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

这是我的 user.rb 文件中的相关部分:

class User < ActiveRecord::Base
      has_one :user_account, :class_name => "UserAccount"
      accepts_nested_attributes_for :user_account

还有我的 user_account.rb 文件:

    class UserAccount < ActiveRecord::Base
      belongs_to :user
    end

这是我的 _form.html.erb 文件:

<div class="field">
  <%= f.label :email %><br>
  <%= f.text_field :email %>
</div>
<div class="field">
  <%= f.label :password %><br>
<%= f.text_field :password %>
</div>
<div class="field">
  <%= f.label :password_confirmation %><br>
  <%= f.text_field :password_confirmation %>
</div>
<% f.fields_for :user_account, @user.user_account do |user_account| %> 
  <div class="field">
    <%= user_account.label :email %>
    <%= user_account.text_field :email %>
  </div>
  <div class="field">
    <%= user_account.label :password %>
    <%= user_account.text_field :password %>
  </div>
  <div class="field">
    <%= user_account.label :password_confirmation %>
    <%= user_account.text_field :password_confirmation %>
  </div>
<% end %> 

前三个按预期显示,但 user_account 的三个表单字段未显示。我已经尝试了所有我可以在网上找到的东西,但我仍然无法弄清楚问题是什么 - 帮助将不胜感激!

我认为您刚刚错过了 f.fields_for 行中的 = 符号。像这样尝试:

<%= f.fields_for :user_account, @user.user_account do |user_account| %>

@user.user_account也不是必须的,但无害。