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
也不是必须的,但无害。
我已经查看了 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
也不是必须的,但无害。