ruby-on-rails - rails 中无模型的 Controller 的布线3

标签 ruby-on-rails model controller routes

我有一个名为BaseController的 Controller ,该 Controller 从ApplicationController继承了关联的模型,但是它具有ping方法,该方法仅响应一条消息以告知一切正常。

我正在尝试通过我的routes.rb文件中的BaseController设置来调用操作ping:

namespace :api, defaults: { format: 'json' } do   
  match '/ping' => 'base#ping' 
end

但是它总是给我一个NameError uninitialized constant Base。我想它正在尝试寻找一个不存在的称为Base的模型,因此,我不知道如何设置到 Controller 的正确路由。

我的BaseController的内容如下:
class Api::BaseController < ApplicationController
   load_and_authorize_resource
   respond_to :json

   def ping
      respond_with({ :status => 'OK' })
   end
end

作为额外的信息:BaseController只是其他 Controller 要继承的父 Controller 。其他是足智多谋的 Controller ,并具有相关的模型

谢谢。

最佳答案

当在路由周围放置一个 namespace 时,它将在该 namespace 内寻找 Controller 。

因此,在您的情况下,它将寻找一个名为Api::BaseController的 Controller ,该 Controller 通常存储在app/controllers/api/base_controller.rb中。这是您的 Controller 的设置方式吗?

有关更多详细信息,请参见此处:http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing

编辑:

我不认为没有找到问题的 Controller 。由于您在 Controller 中调用load_and_authorize_resource导致了该错误。 CanCan使用 Controller 名称尝试加载资源。

如果没有用于 Controller 的模型,请调用authorize_resource :class => false

有关更多详细信息,请参见bottom of this page

关于ruby-on-rails - rails 中无模型的 Controller 的布线3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12835764/

相关文章:

ruby-on-rails - 当我为列设置默认函数时,为什么 Postgres 会双引号第一个函数标识符?

model - laravel: Eloquent 例子将数据插入数据库

asp.net - 将多个模型发送到单个 View 实例

ruby-on-rails - rails |循环和保存 json post 数据的优雅方式

ruby-on-rails - 如何访问 Rack 中间件的特定实例?

ruby-on-rails - 为什么我不能在 Rails 中更改 DateTime 的偏移量?

grails - 如何在 grails 中调用操作而不生成 View

C# MVC Controller 重定向到 Tel、SMS 和 mailto 链接

ruby-on-rails - 奇怪的路由

php - 是否可以创建一个不引用数据库表的 CakePHP 模型?