Ruby on rails 未定义的方法`保存项目';对于ItemsController:Class(NoMethodError)

Ruby on rails 未定义的方法`保存项目';对于ItemsController:Class(NoMethodError),ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我的应用程序_controller.rb中有此方法 class ApplicationController < ActionController::Base protect_from_forgery def save_item(asin, domain, user_id) ... end end 我犯了这个错误 .rvm/gems/ruby-1.9.3-p327@jogg/gems/railties-3.2.13/lib/rails/commands/runner.

我的应用程序_controller.rb中有此方法

class ApplicationController < ActionController::Base
  protect_from_forgery

  def save_item(asin, domain, user_id)
    ...
  end
end
我犯了这个错误

.rvm/gems/ruby-1.9.3-p327@jogg/gems/railties-3.2.13/lib/rails/commands/runner.rb:53:in
eval”:未定义ItemsController:Class的方法
save\u item
(命名错误)

我也试过了

Application.save_item(@item_registration.asin, @item_registration.domain, @item_registration.user_id)  &  ApplicationController... & just save_item(@item_registration.asin, @item_registration.domain, @item_registration.user_id)
&它在非SELF方法中有效,但在SELF.some\u方法中无效

def self.rss
    self.save_item(@item_registration.asin, @item_registration.domain,      @item_registration.user_id)
    ...
end
是一个类方法。
self.save\u项中的self已转移到类
ApplicationController
,而不是
ApplicationController
的实例


但是
save\u item
ApplicationController
的一个实例方法。方法的接收者应该是
ApplicationController
的实例,因此不能是
ApplicationController

您不能从类方法调用实例方法。保存对象也不是控制器的责任。我可以在其他控制器中调用它。就像在控制器类别中一样\u controller.rb def create save\u item(@item\u registration.asin,@item\u registration.domain,@item\u registration.user\u id)…因为这是一个实例方法,而不是类方法。谢谢。我如何在同一个“应用程序控制器”中调用它?我在同一个文件application_controller.rb中得到错误未定义的方法“save_item”,用于ApplicationController:Class(NoMethodError)&我的两个方法都在application_controller.rb您可以在助手或lib模块中实现方法“save_item”,并将助手或lib模块“扩展”到此类中。对于快速测试,您可以尝试调用“ApplicationController.new.save\u item”。但我觉得这可能不是个好办法。谢谢你的解释:)
def self.rss
    self.save_item(@item_registration.asin, @item_registration.domain,      @item_registration.user_id)
    ...
end