ROR + NoMethodError (попытка вызвать закрытый метод) в контроллере - PullRequest
3 голосов
/ 14 марта 2011

В моем коде "

NoMethodError (Попытка вызова частного метод): приложение / контроллеры / project_evaluations_controller.rb: 94: в `Вычислить '"

происходит. SampleCode: для метода Controller :: Index & Show не упоминается.

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 ]

15 голосов
/ 14 марта 2011

update - это закрытый метод для объектов Active Record в Rails.Вы хотите использовать update_attributes вместо.

1 голос
/ 14 марта 2011

Откуда взялась @project_evaluation?Есть ли метод update, который вы определили?Это не существует как метод в экземплярах ActiveRecord (по крайней мере публично), поэтому возможно, что он думает, что вы пытаетесь вызвать частный метод с таким именем, определенный где-то в ActiveRecord :: Base.Это главное, что я вижу, что там происходит, что выглядело неправильно.Я бы изменил его на @project_evaluation.update_attributes().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...