Joh*_*ohn 10 controller routes model ruby-on-rails
我有一个名为BaseController继承自ApplicationControllerwhitout模型的控制器,但它有一个ping方法只响应一条消息,告知一切正常.
我试图通过我的routes.rb文件中的BaseController设置调用动作ping:
namespace :api, defaults: { format: 'json' } do
match '/ping' => 'base#ping'
end
Run Code Online (Sandbox Code Playgroud)
但它总是给我一个NameError uninitialized constant Base.我想它正在尝试找到一个名为Base的模型,它不存在,所以我不知道如何设置到我的控制器的正确路径.
我的BaseController的内容如下:
class Api::BaseController < ApplicationController
load_and_authorize_resource
respond_to :json
def ping
respond_with({ :status => 'OK' })
end
end
Run Code Online (Sandbox Code Playgroud)
作为额外信息:BaseController只是其他控制器继承的父控制器.其他是资源丰富的控制器,并具有相关的模型
谢谢.
dna*_*oli 10
当您在路由周围放置命名空间时,它将在该命名空间中查找控制器.
所以在你的情况下,它将寻找一个名为Api :: BaseController的控制器,它通常存储在app/controllers/api/base_controller.rb中.这是你的控制器设置方式吗?
有关更多详细信息,请参见此处:http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing
编辑:
我不认为它找不到控制器是问题所在.由于您正在load_and_authorize_resource控制器中调用,因此导致错误.CanCan使用控制器名称来尝试加载资源.
如果控制器没有型号,请拨打电话authorize_resource :class => false.
有关详细信息,请参阅本页底部.
| 归档时间: |
|
| 查看次数: |
8649 次 |
| 最近记录: |