轨道4中模块的方法未定义?

时间:2013-09-24 17:33:24

标签: ruby-on-rails ruby ruby-on-rails-4

文件结构:

../controllers
    /api
      /v1
        users_controller.rb
  some_controller.rb

Inside users_controller.rb

module Api
  module V1
    class UsersController < ApplicationController
      def create
        return false
      end
    end
  end
end

我可以在控制器中包含Api并执行Api :: V1 :: UsersController。但是,当我尝试

阿比:: V1 :: UsersController.create

在任何控制器中我都收到错误:

undefined method `create' for Api::V1::UsersController:Class

我已尝试在lib中执行模块,但rails 4自动加载很奇怪所以我尝试这样做,但我不知道为什么我的方法是未定义的。当我进入控制台并放置Api :: V1 :: UsersController.methods.sort时,:create方法不存在。那么我做错了什么?

1 个答案:

答案 0 :(得分:1)

create不是类方法。它不能被称为Class.method

您需要此类的实例来调用它。

如果您只是想尝试(虽然这不是控制器的工作方式)

Api::V1::UsersController.new.create