控制器(tce_params_controller)
def clone
tce_params = TceParamSet.find(params[:id])
puts "This is tce_params"
puts tce_params
cloned_tce_params = tce_params.clone
puts "This is cloned_tce_params"
puts cloned_tce_params
if @saved == true
flash[:notice] = 'Item was successfully cloned.'
redirect_to edit_tce_param_set_path(@cloned_tce_params)
else
flash[:notice] = 'ERROR: Item can\'t be clone'
puts cloned_tce_params.errors
redirect_to system_data_path
end
end模型(TceParamSet)
def clone
cloned_tce_params = TceParamSet.new(self.attributes)
puts "this is attributes in model"
puts cloned_tce_params.attributes
cloned_tce_params.id = nil
if cloned_tce_params.save
cloned_tce_params = cloned_tce_params.name + "(cloned)"
@saved = true
else
@saved = false
end
return cloned_tce_params
end视图
=link_to "Clone", clone_test_group_path(test_group), :method => :clone, :class => :tce_param_sets路由
map.connect '/tce_param_sets/:id/clone', :controller => "tce_param_sets", :action => "clone"当我运行这个程序时,我看到一个错误:“
NoMethodError中的Tce param setsController#clone
未定义的用于#的“保存”方法(表不存在)
/usr/local/rvm/gems/ruby-1.8.7-p357@rails238/gems/rails-2.3.8/lib/commands/server.rb:111 /usr/local/rvm/rubies/ruby-1.8.7-p357/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in gem_original_require' /usr/local/rvm/rubies/ruby-1.8.7-p357/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in需要脚本/服务器:3
请求
参数:
{“id”“=>”3“}
显示会话转储
响应
标题:
{“内容-类型”“=>”、“缓存-控制”=>“无缓存”}
使用我得到的代码
处理TceParamSetsController#clone ( 127.0.0.1在2012-03-12 09:36:37)获取参数:{" id "=>"2"} TceParamSet Load (1.5ms)从"tce_param_sets“选择*,其中”tce_param_sets“(”tce_param_sets“)警告:不能大量分配这些受保护的属性:id (0.3ms)开始TceParamSet加载(0.8ms)从"tce_”中选择"tce_param_sets".idparam_sets“WHERE”("tce_param_sets"."name“= 'Perf: 14520 -Fairherm4.00(最新)-PTS6.00(最新TM-4.00分支)- NA Wireline')限制1 SQL (0.4ms)回滚
为什么会发生这种情况?我没有给身份证任何价值,但它是说,我试图分配身份证.
发布于 2012-03-12 04:06:54
从克隆方法返回的值似乎不是ActiveRecord对象,因此在返回的值上不存在保存方法。此外,模型中的克隆方法似乎有一个循环引用,因为它在它的体内调用您的方法“克隆”。所以我不知道这到底是怎么回事。
首先,确保返回值确实是一个ActiveRecord对象,并考虑使用"super“调用ruby对象的克隆方法。
https://stackoverflow.com/questions/9660355
复制相似问题