刷新页面时,关联模型不保存数据

时间:2011-07-21 19:09:12

标签: ruby-on-rails

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

1 个答案:

答案 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 -%>

这不是复制或测试,但它应该有效。在保存用户时,配置文件字段将随用户字段一起发送并验证,并在保存错误后再次呈现表单时重新呈现。通过这种方式,您可以轻松地完全控制表单及其内容。