让控制器更新动作,更新@foo
。如果有错误,我想通过join / include向实例变量添加信息。如
if @foo.update_attributes(params[:foo])
format.js
else
@foo = @foo.includes(:other_stuff).joins(:more_stuff)
format.js
end
这不起作用(@foo = @foo ....)。有没有办法让这个工作?即获取要输入变量的错误代码和参数。
答案 0 :(得分:0)
您可能有标准的生成器代码来查找您正在使用的实例@foo(@foo = Foo.find(params[:id])
)。在这种情况下,@ foo不是您期望的ActiveRecord::Relation
。你需要运行另一个查询来加载带有包含的记录,即@foo = Foo.includes(:other_stuff).joins(:more_stuff).find(params[:id])
,但我不认为这样做会带来很多好处。
答案 1 :(得分:0)
就像Ogz的向导所说,当你想要将调用链接到它时,@foo
不是Arel对象。变量本身作为Arel对象保留,直到需要它的数据。就像当你试图打电话给.update_attributes
时一样。你需要第二个查询(比如Wizard of Ogz提到),或者第二个变量(最终会运行第二个查询),如:
@bar = @foo
if @foo.update_attributes(params[:foo])
format.js
else
@foo = @bar.includes(:other_stuff).joins(:more_stuff)
format.js
end