как сделать более одного обновления в одном контроллере в ruby ​​на рельсах - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть две модели как x и y, такие что:

y.rb:

class y < ActiveRecord::Base  
  belongs_to :x  
end

x.rb:

class X < ActiveRecord::Base  
  has_many :Ys
end

мой контроллер будетbe:
x.controller.rb:

def update
  @x = X.find(params[:id])

  @x.update_attributes(params[:x]) 
  @y = (params[:y])
  @y.each { |t| t.attributes = params[:y][t.id.to_s] }

  @x.ys.build(attributes)    
  flash[:notice] = 'X was successfully updated.'
  redirect_to :action => 'edit'          
end

Это не обновляет данные y и выдает ошибку как:

неопределенный метод `attribute = 'для [" s"," 1233 "]: массив

Ответы [ 2 ]

0 голосов
/ 19 апреля 2011

Кажется, что t - это массив, а не объект ActiveRecord.

Из вашего псевдокода ошибка здесь

@y = (params[:y])
0 голосов
/ 19 апреля 2011

params[:y] выглядит как массив массивов;то есть для каждого экземпляра Y, описанного в params, существует отдельный массив.Поэтому, когда вы делаете @y.each, вы перебираете группу массивов, а не группу Ys.

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