chr*_*ris 0 ruby ruby-on-rails has-one nested-forms ruby-on-rails-4
我已经查看了有关stackoverflow和其他地方这个相当常见的问题的所有帖子,但我还没有找到答案.基本上我的嵌套表单没有构建,因此在我显示页面时不可见.
这是我的用户控制器的相关部分,users_controller.rb:
def new
@user = User.new
@user.build_user_account
end
Run Code Online (Sandbox Code Playgroud)
这是我user.rb文件中的相关部分:
class User < ActiveRecord::Base
has_one :user_account, :class_name => "UserAccount"
accepts_nested_attributes_for :user_account
Run Code Online (Sandbox Code Playgroud)
我的user_account.rb档案:
class UserAccount < ActiveRecord::Base
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
这是我的_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 %>
Run Code Online (Sandbox Code Playgroud)
前三个按预期显示,但三个表单字段user_account不显示.我已经尝试了一些我能在网上找到的东西,但我仍然无法解决问题所在 - 帮助将不胜感激!
我想你刚刚错过=了f.fields_for线上的标志.试试这样:
<%= f.fields_for :user_account, @user.user_account do |user_account| %>
Run Code Online (Sandbox Code Playgroud)
这@user.user_account不是必要的,但不会造成伤害.