Ruby on rails 未定义的方法`保存项目';对于ItemsController:Class(NoMethodError)
我的应用程序_controller.rb中有此方法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.
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