2017-10-21 6 views
1

AJAXを使用してRailsコントローラを呼び出し、レコードを取得してからそのレコードをAJAX呼び出しに返します。Rails:AJAX呼び出し元にコントローラオブジェクトを返す

jQuery -> 
    $.ajax 
    type: 'GET', 
    url: '/reports', 
    dataType: 'script', 
    success: (response) -> 
     console.log response 
     return 
    error: (response) -> 
     console.log response 
     return 

私のコントローラは以下の通りである:今

class ReportsController < ApplicationController 

    def report 
    @test_result = TestResult.first 

    respond_to do |format| 
     format.js { render json: @test_result.to_json } 
     format.html 
    end 
    end 

end 

、私はAJAXでなく、誤差関数を通じてオブジェクトにアクセスすることができます(error: (response) ->(私はCoffeScriptを使用しています)、次のように私のAJAX要求があります)AJAXメソッドの成功関数(success: (response)->)ではありません。 xhrコールからのステータスが200またはokの場合でも、応答が成功関数にどのように進まないのでしょうか?私はそれを把握することはできません。

答えて

1

dataType: 'json'でAJAXコールを作成し、コントローラーからのAJAX応答に沿ってステータスコードをformat.jsonに戻す必要があります。

jQuery -> 
    $.ajax 
    type: 'GET', 
    dataType: 'json', 
    url: '/reports', 
    dataType: 'script', 
    success: (response) -> 
     console.log response 
     return 
    error: (response) -> 
     console.log response 
     return 

コントローラ

def report 
    @test_result = TestResult.first 

    respond_to do |format| 
    format.json { render json: @test_result.to_json, status: :success } 
    format.html 
    end 
end 
1

あなたのURLはAjaxのURLが'/controller/action'で、dataType: 'json'となっています。なぜなら、これはあなたがサーバーから見ているものなので、Ajax設定のあなたのURLは'/reports/report'です。

関連する問題