처음 로드할 때만\u 및\u authorize\u 리소스를 로드합니다.
4328 단어 cancan
묘사
이거 미친 짓이야.어떤 이유로 내 애플리케이션(Rails 3.2.13 및 Desive)에서 오류가 발생했습니다."'load and authorize resources'for Home Controller:Class'에 정의되지 않은 로컬 변수 또는 방법"
서버가 시작된 후 내가 페이지를 처음 눌렀을 때만이 초기 오류 이후, 만약 내가 다시 불러와서 어떤 내용도 바꾸지 않았다면, 페이지는 정상적으로 작동할 것이다.또한, 만약 내가 두 개의 브라우저 (한 개의 사파리, 한 개의 크롬) 를 열었다면, 첫 번째로 한 브라우저에서 그것을 클릭한 다음, 첫 번째로 다른 브라우저에서 그것을 클릭하면, 그것은 작동할 것이다.(즉, 나는 이것이 Desive와sessions 같은 이상한 것일 수도 있다고 생각한다.)
CanCan은 정상적으로 작동하는 것으로 알고 있습니다.보신 분 계세요?나는 심지어 어디서부터 시작해야 할지조차 모른다.
토론 #1
저는 Heroku에서 이 오류를 당해서 배치에 실패했습니다.토론 #2
처음 불러올 때 그것을 얻을 것입니다. rails 4 베타 1이 개발 중토론 #셋
은 완전히 우리의 문제입니다.파일 구성 오류입니다.2013년 4월 25일 새벽 1:13, 마크 감도프[email protected]쓰기:
I'm getting it on the first load, rails 4 beta 1 in development
— Reply to this email directly or view it on GitHub.
토론 #4
I'm getting the error: ''undefined local variable or method `load_and_authorize_resources' ..
이 방법의 이름
load_and_authorize_resource
은 단수 아닙니까?이것은 단지 타자 오류일 뿐입니까?또한 당신이 사용해야 할 방법이라고 가정하면 어떤 버전의 cancan을 사용합니까?너는 너의 GEM 파일에 적용되는 줄을 포함할 수 있니?
토론 #5
응, 네 말이 맞아.나는 확실히 복수 형식이 있다.그러나 그것을 바꾸는 것은 더 많은 문제를 가져올 것이다.현재, 만약 내가 나의 컨트롤러를 클릭한다면, 나는 다음과 같은 오류를 얻을 것이다. (부분 회상)NameError- 상수 Home이 초기화되지 않았습니다.
(gem)activesupport-3.2.13/lib/active_support/dependencies.rb:520:const missing
load_missing_constant'
(gem) activesupport-3.2.13/lib/active_support/dependencies.rb:192:in
블록(gem)activesupport-3.2.13/lib/active_support/dependencies.rb:190:in
const_missing'
(gem) activesupport-3.2.13/lib/active_support/inflector/methods.rb:230:in
constantize'(gem)activesupport-3.2.13/lib/active_-support/influctor/methods.rb:229:in
constantize'
(gem) activesupport-3.2.13/lib/active_support/core_ext/string/inflections.rb:54:in
constantize'(gem)cancan-1.6.10/lib/cancan/controller_resource.rb:147:in
resource_class'
(gem) cancan-1.6.10/lib/cancan/controller_resource.rb:187:in
리소스 라이브러리(gem)cancan-1.6.10/lib/cancan/controller_resource.rb:77:in
load_collection?'
(gem) cancan-1.6.10/lib/cancan/controller_resource.rb:33:in
리소스 로드'(gem)cancan-1.6.10/lib/cancan/controller_resource.rb:25:in
load_and_authorize_resource'
(gem) cancan-1.6.10/lib/cancan/controller_resource.rb:10:in
블록에 필터 전에 추가그래서 나는 디버깅을 깊이 들어가서 이 문제를 발견했다. 그것은 컨트롤러 자원의 147줄에 들어가고 있었다.줄을 서다
147 nil 다음에 name 으로 이름을 지정합니다.우리를 낙타화시키다.영구 불변하다
이름 공간 name 이 Home 으로 설정되어 있음을 표시합니다."Home Controller"라는 이름으로 ""Home Controller""객체를 상수화하려고 할 때 찾을 수 없습니다."다음은 내가 테스트한 Home Controller의 전체 내용입니다.
클래스 HomeController<어플리케이션 컨트롤러
리소스 로드 및 권한 부여
def 인덱스
#아무것도 하지 않고 클라이언트만 부팅
끝맺다
끝맺다
그리고 내 능력.rb
학급 능력
CanCan 포함: 기능
def 초기화(사용자)
can:manage,:all
끝맺다
끝맺다
나는 방금 gm를 1.6.10으로 갱신했다.이것은 매우 기본적인 테스트 응용 프로그램으로, 우리는 주로 일부 클라이언트의 물건을 테스트하는 데 쓰인다.따라서 현재 컨트롤러/모델의 수가 매우 적다.Desive를 사용하고 있지만 아직 구현되지 않았습니다.
만약 다른 사람들이 그것을 성공적으로 사용하고 있다면, 나는 그것이 내 편이라고 믿는다.나는 단지 도대체 왜 그런지 아직 이해하지 못했을 뿐이다.나는 새로운 프로젝트를 세우고 AsciCast를 통해 내가 무엇을 잘못했는지 피드백을 할 수도 있다.
토론 #6
자원이 없기 때문에 불러올 수 없습니다.위키Authorizing controller actions 를 참조하십시오.삭제
Home
를 하고 각 방법load_and_authorize
에서 사용할 수 있습니다.예를 들면 다음과 같습니다.class HomeController < ApplicationController
def index
authorize! :index, :homepage
end
end
class Ability
include CanCan::Ability
def initialize(user)
can :index, :homepage
end
end
당신에게 적합한 다른 설정도 있습니다. 이상은 단지 하나의 예일 뿐입니다.authorize!
@davesands@jaredbeck이 맞습니다. 컨트롤러가 아닌 모델을 불러오려고 시도합니다@jaredbeck의 해결 방안은 효과가 있을 것입니다. 그리고:토론 #7
대신Home
authorize_resource class: false
얼굴 종려나무.나는 또 다른 예를 따랐다. 이것은 자원이어서 생각하지 않았다.나는 나의 심부름에 대해 사과한다.이것은 매우 일리가 있다.
Reference
이 문제에 관하여(처음 로드할 때만\u 및\u authorize\u 리소스를 로드합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://github.com/ryanb/cancan/issues/856
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(처음 로드할 때만\u 및\u authorize\u 리소스를 로드합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/ryanb/cancan/issues/856텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)