在我的代码中“
NoMethodError(尝试调用私有 方法): 应用程序/控制器/ project_evaluations_controller.rb:94:在 `计算'“
发生。 SampleCode:For Controller :: Index&没有提到Show Method。
class ProjectEvaluationsController < ApplicationController
skip_before_filter :verify_authenticity_token, :only => [:index, :show]
def calculate
@project_id = params[:id]
@costs_last_calculated = Time.now.utc
@total_internal_hours = 10
@total_external_hours = 20
@project_evaluation.update(:internal_hours => @total_internal_hours, :external_hours => @total_external_hours, :costs_last_calculated => @costs_last_calculated)
render :action=>"show"
end
end
路线:
resources :project_evaluations do
match "calculate", :on => :collection
end
建议任何解决方案!!!
答案 0 :(得分:15)
update
是Rails中Active Record对象的私有方法。您想要使用update_attributes
。
答案 1 :(得分:1)
@project_evaluation来自哪里?你定义了update
方法吗?这不作为ActiveRecord实例上的方法(至少是公开的)存在,因此它可能会认为您正在尝试调用ActiveRecord :: Base中定义的该名称的私有方法。这是我看到的主要事情,那里看起来不对劲。我会改为@project_evaluation.update_attributes()
。