Rails 3.1 RC4
用户与个人资料之间存在1:1关联。 当我提交新的个人资料表格时,我输入的数据显示得很好(见屏幕截图:http://i.imgur.com/fY8YU.png),但当我刷新数据时,数据会立即被删除。
有谁能告诉我是什么原因造成的?
这是提交表格:
<%= form_for([@user, @user.build_profile]) do |f| %>
<div class="field">
<%= f.label :first_name %><br />
<%= f.text_field :first_name %>
</div>
<div class="field">
<%= f.label :last_name %><br />
<%= f.text_field :last_name %>
</div>
<div class="field">
<%= f.label :picture %><br />
<%= f.text_field :picture %>
</div>
<div class="field">
<%= f.radio_button(:sex, "male") %>
<%= f.label(:sex, "Male") %>
<%= f.radio_button(:sex, "female") %>
<%= f.label(:sex, "Female") %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
这是users_controller:https://github.com/imjp/SuperModel/blob/master/app/controllers/users_controller.rb
这是profiles_controller:https://github.com/imjp/SuperModel/blob/master/app/controllers/profiles_controller.rb
答案 0 :(得分:1)
我不确定我同意你的做法。你为什么不这样做:
在models / user.rb中:
accepts_nested_attributes_for :profile
在controllers / users_controller.rb中:
def new
@user = User.new
@user.build_profile
end
在views / users / _form.html.erb中:
<%= form_for @user do |f| %>
<%= f.text_field :first_name %>
<%= f.fields_for :profile do |pf| %>
<%= pf.text_field :some_profile_field %>
<% end -%>
<%- end -%>
这不是复制或测试,但它应该有效。在保存用户时,配置文件字段将随用户字段一起发送并验证,并在保存错误后再次呈现表单时重新呈现。通过这种方式,您可以轻松地完全控制表单及其内容。