2013-04-27 4 views
0

내 index.html에서 'rates/rate_form'%> 을 렌더링하여 비율 양식을 렌더링하고 양식은 아약스입니다. 내용 _rate_form이다 : 내 요금 컨트롤러에서rails3 before_filter 원인 필터 체인이 다음과 같이 중지되었습니다. 렌더링 된 또는 리디렉션 된 인증 오류

`<%= form_for [@image, Rate.new], :remote=>true do |f| %> 
<input type="hidden" name="image_id" value="<%= @image.id%>"/> 
<button type="submit"> Rate</button> 
<% end %>` 

은, 난 단지 속도를 만들 수 있습니다 사용에 서명 한 before_filter를 정의했다. 클래스 RatesController <와 ApplicationController before_filter : 인증 : 만 => :

def authenticate 
    redirect_to signin_url unless signed_in? 
end 

로그는 다음과 같습니다 :

Redirected to http://localhost:3000/signin 
Filter chain halted as :authenticate rendered or redirected 
Completed 302 Found in 3ms (ActiveRecord: 0.7ms) 


Started GET "/signin" for 127.0.0.1 at 2013-04-28 12:36:56 +0300 
Processing by SessionsController#new as JS 
Rendered sessions/new.html.erb within layouts/application (1.3ms) 
User Load (0.9ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT 1 
Rendered sessions/new.html.erb (1.2ms) 
Rendered layouts/_nav.html.erb (4.8ms) 
Rendered layouts/_search.html.erb (0.6ms) 
Rendered layouts/_notice_div.html.erb (0.1ms) 
Completed 200 OK in 26ms (Views: 24.3ms | ActiveRecord: 0.9ms) 

난을 클릭하면 내 sesson_helper 파일에

def create 
@rate=Rate.new(:rate=>1) 

respond_to do |format| 
    if @rate.save 
    format.html { redirect_to(@rate) } 
    format.js 
    end 
end 
end 

를 만들 Rate 버튼, 콘솔에 오류가 있습니다 : 필터 체인이 다음과 같이 중지되었습니다 : deny_access가 렌더링되거나 리디렉션 됨 어떻게 해결할 생각인가? 고마워요!

답변

1

따라서 작성 작업을 실행할 때마다 실행되는 필터가 있습니다. 그것은 무조건 리다이렉트한다는 것이다. 이것은 아무도 create 액션을 호출 할 수 없다는 것을 의미합니다. 나는 deny_access 내에 로그인 된 세션을 확인하는 검사가 있어야한다고 생각합니다.

로그에 표시되는 메시지는 필터가 리디렉션되었음을 알려줍니다.

+0

실제로 deny_access 함수는 다음과 같습니다. def deny_access redirect_to signin_url signed_in이 아닌 경우? 끝 – user1611237

+0

... 오, 나는 그것을 보지 못했습니다. 리디렉션 호출 바로 전에 디버거 세션을 시작할 수 있습니까? 어떻게 든 signed_in? 거짓을 돌려주는 것 같습니다. – moritz

+0

2013/04/28 12:36:56에 GET "/ signin"시작 12:36:56 +0300 JS로 새 소식 레이아웃/응용 프로그램 (1.3ms) 내에 렌더링 된 세션/new.html.erb 사용자로드 (0.9ms) SELECT "users". * FROM "users"WHERE "users". "id"IS NULL LIMIT 1 렌더링 된 세션/new.html.erb (1.2ms) 렌더링 된 레이아웃/_nav.html.erb (4.8ms) 렌더링 된 레이아웃/_search.html.erb (0.6ms) 렌더링 된 레이아웃/_notice_div.html.erb (0.1ms) 안녕하세요, @ 모리츠, 여기 로그가 있습니다. "SessionsController #New as JS ", 나는 HTML과 같아야한다고 생각한다. 맞습니까? – user1611237