약간의 문제가 있습니다.레일즈 응용 프로그램 컨트롤러 메서드가 자식에서 정의되지 않았습니다
나는과 같이 규정 된 다음과 같은 컨트롤러가 :
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
레일 set_permissions
그것이 상속 체인에 분명 거기에도 불구하고 존재하지 않는 생각하는 것 같다 (I 심지어 도우미 메서드로 설정).
TokenController
에서 오류가 발생합니다.
또한 솔직히 이전에 작동하지 않았기 때문에 도우미 메서드로 넣었습니다. 고칠 수도 있다고 생각했습니다.
내가 뭘 잘못하고 있니?
p.s. 내가 api 디렉토리에 있기 때문에 API 컨트롤러에 Api::
을 추가하려고 시도했지만 그것은 아무것도하지 않습니다.
편집 : 죄송합니다, 잘못된 컨트롤러, 더 많은 관심을 기울여야합니다.
편집은 다음 ApplicationController
와 서브 컨트롤러에 set_permissions
의 DEF 아래 : 좋아, 그래서 다음 코드를 넣어
ap 'ApplicationController responds'
ap self.respond_to?(:set_permissions)
하고 그들 모두에 대해 거짓 반응, 그것은 그렇게 정의되는 것 무슨 일이야?
p.s. ap는 awesome_print
입니다.
편집 : 그래서,이 포착되고있어 self.
def set_permissions
에 지금 추가,하지만 지금은
undefined method `perms=' for ApiController:Class
편집을거야 : 나는에 투입하는 것을 잊지 않았다, 나는 @
에 self.
을 변경하고 그것은 provlem 고정 코드를 업데이트 내가 attr_accessor
했다 코드 (이를 표시합니다. 컨트롤러가 attr_accessor 또는 뭔가를해야만 싫어합니까?
당신은'set_permisions'과'set_permissions' 사이에 차이가 있습니까? –
죄송합니다. 맞춤법 오류를 발견하지 못했습니다. 감사합니다. – Thermatix
해결 했습니까? –