2013-12-18 12 views
0

나는 컨트롤러 중 하나를 삭제하기로 결정한 Rails 4 앱 (레일 3에서 업그레이드 됨)을 가지고 있습니다.UnknownFormat in Devise :: SessionsController # new

ActionController::UnknownFormat in Devise::SessionsController#new

:이 오류를 받고 있어요 지금

class ApplicationController < ActionController::Base 
    protect_from_forgery 
    before_filter :authenticate_user! 
    respond_to :json 

    def index 
    gon.rabl 

    @user = current_user 
    gon.rabl "app/views/users/show.json.rabl", as: "current_user" 
    end 

    def markdown 
    require 'redcarpet' 
    renderer = Redcarpet::Render::HTML.new 
    extensions = {} 
    Redcarpet::Markdown.new(renderer, extensions) 
    end 

    helper_method :markdown 

end 

: 나는 여기에 내와 ApplicationController 지금의 모습입니다 before_filter :authenticate_user!

를 포함와 ApplicationController에 삭제 된 컨트롤러의 방법을 이동

답변

5

이것이 응용 프로그램 컨트롤러가 json에만 응답하도록 설정했기 때문일 수 있습니다. Devise 컨트롤러가 ApplicationController에서 상속하는 경우 (기본값이라고 생각합니다) 콘텐츠 유형 : json 헤더가 표시되거나 URL이 모두 .json으로 끝나야합니다.

+0

당신은 완전히 옳았다,하지만 난 혼란 스러워요 이전의 컨트롤러 (내가 삭제 한 컨트롤러)를 json에만 응답하도록 설정했기 때문에 before_filter : authenticate_user!로 정상적으로 작동했습니다. – niftygrifty

+1

기본적으로 모든 컨트롤러 (일반적으로)는 응용 프로그램 컨트롤러를 상속하므로 응답하도록 설정되어 있으면 j 아들, 그렇다면 그들은 모두 있습니다. devios 컨트롤러는 html에 반응하지 않는 한 약간의 변경없이 작동하지 않습니다. – Slicedpan

+0

'respond_to : json' 비트를 포함하는 방법이 있습니까? 'respond_to : json, : unless == : devise_controller?'와 같은 것 (방금 시도했지만 작동하지 않음) – niftygrifty

1

method_controller에 정의 된 메소드. 해당 컨트롤러로 이동해야합니다. 나는 내가 곤 물건에 대해 잘 모르겠어요 것을 정직하게했습니다 있지만

before_action :gon_user, only: :index 
private 
def gon_user 
    gon.rabl 

    @user = current_user 
    gon.rabl "app/views/users/show.json.rabl", as: "current_user" 
end 

, 경우 기억할 수 : 이것은 당신이 모든 행동하기 전에하고 싶은 일이 있으면 당신이 뭔가를 시도 할 수도 있습니다 루비에서 자바 스크립트로 데이터를 이동하거나 아약스/json 요청에 응답하기위한 것이 었습니다.

+0

머리를 주셔서 감사합니다. 백본을 사용하는 단일 페이지 웹 앱이기 때문에이 방법으로 앱을 구성했습니다. 'views/application/index.html.erb'에는 전체 앱에 대한 단일 항목이 들어 있습니다. 실제 루트는 Backbone App 개체에 정의되어 있습니다. – niftygrifty

0

감사합니다. 생각해 보니

respond_to :json 

각도가있는 API로 내 레일 애플리케이션에 사용되었습니다. 내 Rails 컨트롤러에서와 마찬가지로 Angular Services의 요청에 사용합니다. 내 경우

respond_with 

은 내가 respond_to에 HTML을 추가 결국 :

respond_to :json, :html 

마임 유형이 여기에 볼 수있는 기본 : http://apidock.com/rails/Mime

관련 문제