我有一个小问题。
我有以下控制器,如下所示:
class ApplicationController < ActionController::Base
attr_accessor :perms
helper_method :set_permissions
def set_permissions *permissions
self.perms = permissions
end
end
class ApiController < ApplicationController
set_permissions :api
end
class Api::TokenController < ApiController
set_permissions :none
end
Rails 似乎认为set_permissions
它不存在,即使它显然存在于继承链中(我什至将它设置为辅助方法)。
错误发生在TokenController
.
另外,我把它作为一种辅助方法,因为老实说,它以前不起作用,我认为它可能会修复它。
我究竟做错了什么?
ps 我已经尝试附加Api::
到 api 控制器,因为它位于 api 目录中,但什么也没做。
编辑:对不起,错误的控制器,我需要多加注意。
编辑:好的,所以我将以下代码放入:在和子控制器中的defset_permissions
下 ApplicationController
:
ap 'ApplicationController responds'
ap self.respond_to?(:set_permissions)
并且它对所有人的响应都是错误的,它正在被定义,所以发生了什么?
ps ap 是awesome_print
,你知道的。
编辑:所以,添加self.
到def set_permissions
现在它正在被拾取,但现在它正在发生
undefined method `perms=' for ApiController:Class
编辑:我更改self.
为@
并修复了问题,我忘记放入我拥有的attr_accessor
代码(更新代码以显示这一点。控制器不喜欢 attr_accessor 或其他东西吗?