Rails:从另一个控制器调用控制器方法 - > NoMethodError

时间:2012-10-16 15:36:03

标签: ruby-on-rails devise controller nomethoderror

我正在使用Devise gem并拥有2个控制器:

1:controllers / admin / mailings_controller.rb:

class Admin::MailingsController < ApplicationController
  def self.send_emails
    ...
    RegistrationsController.create
    ...
  end
end

2:controllers / registrations_controller.rb:

class RegistrationsController < Devise::RegistrationsController
  ...
  # POST
  def create
     # do some stuff
     super
     # do some stuff
  end
  ...
end

但是当我执行时(在控制台中)......

Admin::MailingsController.send_emails

......我明白了......

"NoMethodError: undefined method `create' for RegistrationsController:Class"

为什么呢?以及如何解决这个问题?

rake routes

...显示没问题:

user_registration POST  ->  /users(.:format)  ->  registrations#create

1 个答案:

答案 0 :(得分:1)

RegistrationsController.create更改为RegistrationsController.new.create

OR

def create更改为def self.create

您在这里遇到的困惑是使用类方法来调用实例方法。您可以通过在实例上调用方法或将方法更改为类方法来解决此问题。