我有两个模型作为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”]:数组
答案 0 :(得分:0)
params[:y]
看起来是一个数组数组;也就是说,对于params中描述的每个Y实例,都有一个单独的数组。因此当你执行@y.each
时,你会迭代一堆数组,而不是一堆Y.
答案 1 :(得分:0)
似乎t是一个数组而不是ActiveRecord对象。
来自您的伪代码错误就在这里
@y = (params[:y])