2017-03-22 1 views
0

레일스를 처음 사용하기 때문에 끝이없는 페이지를 구현하려고합니다. 컨트롤러 지수 나는이 : I 버튼 '로드 더 많은 메시지'를 클릭하면rails은 Ajax 요청일 때만 변수를 할당하거나 그 반대의 경우

def index 
     @messages = @conversation.messages.order('created_at DESC') 
         .paginate(page: params[:page], 
            per_page: 8) 
     @match = @conversation.match 
     @bid = @conversation.bid unless @conversation.bid.nil? 
     @table = @match.table unless @match.nil? 
     read_message 
     get_participant 
    end 

다음, 다음 다음 페이지의 메시지를 얻을 수 아약스 요청을 발생합니다. 하지만 이번에는 @bid, @table 변수를 더 이상 원하지 않습니다. 그러나 그것이 내 컨트롤러에 도착할 때마다 데이터베이스에 다시 도달하게됩니다.

제 질문은 특정 변수를 Ajax 요청 일 때만 할당하는 방법이 있습니까? 혹은 그 반대로도? 당신이 AJAX 요청을 보낼 때

감사

답변

0

, 당신은 당신이 원하는대로 값을 사용자 정의 헤더를 보낼 수 있습니다. 따라서 true 값을 가진 X-IS-AJAX-REQUEST 헤더를 보내십시오. 이것으로 Rails에서 그 헤더의 값을 얻고 조건을 사용하여 설정해야하는 변수 만 설정할 수 있습니다. 이 같은 것이 작동 할 수 있습니다.

def index 
    @messages = @conversation.messages.order('created_at DESC') 
        .paginate(page: params[:page], 
           per_page: 8) 
    @match = @conversation.match 
    unless request.headers['X-IS-AJAX-REQUEST'] then 
     @bid = @conversation.bid unless @conversation.bid.nil? 
     @table = @match.table unless @match.nil? 
    end 
    read_message 
    get_participant 
end 
+0

request.xhr을 사용하면 끝났습니까? 레일에 내장 된 지름길 – Rosalie

관련 문제