2015-01-19 4 views
0

요청이 무효로 간주되는 경우 요청을 무시하는 필터를 작성하려면 어떻게해야합니까?POST 요청이 유효하지 않은 경우 '삭제'하는 방법

가장 간단한 디자인은 들어오는 요청에 모든 필드가 있는지 확인하는 것입니다. 그 중 하나가 아니라면, 레일스 애플리케이션이 충분한 정보를 반환하여 유효성을 테스트 할 수 있기를 바랍니다.

class ListenerController < ApplicationController 
    skip_before_filter :requires_login, :requires_employee 
    before_filter :validate 
    protect_from_forgery except: :create 

    def create 
    render nothing: true 
    Listener.process(params) 
    end 

    private 

    def validate 
    return_invalid unless params[:id].present? 
    return_invalid unless params[:content].present? 
    return_invalid unless params[:summary].present? 
    return_invalid unless params[:displayName].present? 
    true 
    end 

    def return_invalid 
    #do something to return simple message 
    end 
end 

감사 :

는 지금, 나는 아주 간단한 아이디어가있다.

+0

'render plain : 'Invalid'' 그게 무슨 뜻입니까? – ptd

답변

1

400 개의 상태 코드를 렌더링 할 수 있습니다.

def return_invalid 
    head(400) 
end 

레일스는 즉시 필터의 끝에서 돌아와 상태 코드를 렌더링합니다.

좀 더 사용자 친화적 인 메시지 (예 : 메시지)를 원할 경우 작업 (동일 또는 "새 메시지")으로 리디렉션하고 메시지를 flash 메시지로 전달하십시오.

def return_invalid 
    redirect_to { action: "new" }, alert: "Something is wrong" 
end 
관련 문제