如何在轨道上的ruby中的一个控制器中进行多个更新

时间:2011-04-19 13:24:21

标签: ruby-on-rails

我有两个模型作为x和y,这样:

y.rb:

class y < ActiveRecord::Base  
  belongs_to :x  
end

x.rb:

class X < ActiveRecord::Base  
  has_many :Ys
end

我的控制器将是:
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数据并给出错误:

  

未定义方法`attributes ='表示[“s”,“1233”]:数组

2 个答案:

答案 0 :(得分:0)

params[:y]看起来是一个数组数组;也就是说,对于params中描述的每个Y实例,都有一个单独的数组。因此当你执行@y.each时,你会迭代一堆数组,而不是一堆Y.

答案 1 :(得分:0)

似乎t是一个数组而不是ActiveRecord对象。

来自您的伪代码错误就在这里

@y = (params[:y])