【问题标题】:Method undefined for modules in rails 4?rails 4中模块的方法未定义?
【发布时间】:2013-09-24 17:33:24
【问题描述】:

文件结构:

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

在 users_controller.rb 中

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

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

Api::V1::UsersController.create

在任何控制器中都会出现错误:

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

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

【问题讨论】:

  • 你必须用文件夹的名字声明类名:class Api::V1::UsersController &lt; ApplicationController

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


【解决方案1】:

create 不是类方法。不能叫Class.method

你需要这个类的一个实例来调用它。

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

Api::V1::UsersController.new.create

【讨论】:

    猜你喜欢
    • 2015-01-22
    • 2011-11-19
    • 1970-01-01
    • 2015-12-10
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多