多亏了 Rails 2.3 的新特性,我构建了一个类似引擎的插件。它是 CMS 的“产品”模块,是从先前存在的(和工作的)模型/控制器中推断出来的。该插件依赖于 easy_fckeditor 和 globalize (描述和标题字段是本地化的),我怀疑 globalized 可能是这里的罪魁祸首......一切正常,除了更新操作。我收到以下错误消息:(仅发布第一行,所有消息都是关于 attribute_methods)
stack level too deep
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.2/lib/active_record/attribute_methods.rb:64:in `generated_methods?'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.2/lib/active_record/attribute_methods.rb:241:in `method_missing'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.2/lib/active_record/attribute_methods.rb:249:in `method_missing'
对于参考,完整的错误堆栈在这里:http ://pastie.org/596546
我试图调试消除所有输入字段,一个接一个,但我不断收到错误。fckeditor 似乎不是罪魁祸首(即使没有 fckeditor 也会出错)
这是动作:
def update
params[:product][:term_ids] ||= []
@product = Product.find(params[:id])
respond_to do |format|
if @product.update_attributes(params[:product])
flash[:notice] = t(:Product_was_successfully_updated)
format.html { redirect_to products_path }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @product.errors, :status => :unprocessable_entity }
end
end
end
如您所见,它非常简单。