Связанная модель не сохраняет данные при обновлении страницы - PullRequest
0 голосов
/ 21 июля 2011

Рельсы 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 %>

Вот пользовательский контроллер: https://github.com/imjp/SuperModel/blob/master/app/controllers/users_controller.rb

Вот профиль_контроллера: https://github.com/imjp/SuperModel/blob/master/app/controllers/profiles_controller.rb

1 Ответ

1 голос
/ 21 июля 2011

Я не уверен, что согласен с вашим подходом.Почему бы вам не сделать что-то вроде этого:

В моделях / user.rb:

accepts_nested_attributes_for :profile

В контроллерах / users_controller.rb:

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

В представлениях/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 -%>

Это не копируется и не проверяется, но должно работать.При сохранении вашего пользователя поля профиля отправляются и проверяются вместе с пользовательскими полями и повторно отображаются при повторной визуализации формы после ошибки сохранения.Таким образом вы сохраните полный контроль над своей формой и ее содержимым с минимальными усилиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...