Вложенные формы Rails не обновляются - PullRequest
1 голос
/ 06 июля 2011

У меня проблема с получением update_attributes для обновления вложенных моделей в моей форме.У меня нет ошибок, но вложенные атрибуты не сохраняются.Вот соответствующий код:

Модель пользователя:

class User < ActiveRecord::Base 
  has_many :orders
  has_many :achievements    

  accepts_nested_attributes_for :achievements 

Модель достижений:

class Achievement < ActiveRecord::Base
  belongs_to :user 

Редактировать форму пользователя:

<%= form_for @user, :html => { :multipart => true } do |f| %>   

...

<%= f.fields_for :achievements do | a | %>
    <%= a.label :title %>
    <%= a.text_field :title %><br>
<% end  %>  

Метод редактирования:

def edit    
    @user = nil
    if params[:id] != nil
      @user = User.find(params[:id]) 
    elsif
      @user = current_user
    else
      redirect_to login_path
    end  
    5.times { @user.achievements.build }
  end  

Метод обновления:

@user.update_attributes params[:user]

Но когда я проверяю массив @ user.achievements, он всегда пуст, даже когда язаполните формы.Кто-нибудь знает, что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 06 июля 2011

Вы должны изменить на accepts_nested_attributes_for :achievements_attributes.Вы можете проверить параметры сообщений формы в файле журнала, чтобы увидеть, как рельсы назвали элементы формы.Или просмотрите HTML-код на своей странице.

0 голосов
/ 06 июля 2011

в модели пользователя:

attr_accessible :achievements_attributes

Кажется, работает:)

...