在Controller中ROR + NoMethodError(尝试调用私有方法)

时间:2011-03-14 04:04:25

标签: ruby-on-rails ruby ruby-on-rails-3

在我的代码中“

  

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

建议任何解决方案!!!

2 个答案:

答案 0 :(得分:15)

update是Rails中Active Record对象的私有方法。您想要使用update_attributes

答案 1 :(得分:1)

@project_evaluation来自哪里?你定义了update方法吗?这不作为ActiveRecord实例上的方法(至少是公开的)存在,因此它可能会认为您正在尝试调用ActiveRecord :: Base中定义的该名称的私有方法。这是我看到的主要事情,那里看起来不对劲。我会改为@project_evaluation.update_attributes()