2011-01-21 6 views
0

私は私の_form.html.erbから呼び出す次のjavascriptを持っています。コントローラメソッドからデータを取得するか、レール3のヘルパーをajaxに戻す

$.ajax({ 
type: "GET", 
url: "/articles/" + $(this).attr('value'), 
success: function(data){} 
}); 

私はこの要求から何らかのデータを取得したいと思います(多分jsonオブジェクトまたはArticleオブジェクト)。ヘルパーに電話する必要があるかどうかはわかりません。私がコントローラを呼び出すと、返されるのは対応するビューからのhtml応答だけです。

答えて

4

あなたのコントローラでは、おそらくフォーマットに応じて異なる応答を生成するためにrespond_toブロックを使用するべきです。

def show 
    @article = Article.find(params[:id]) 
    respond_to do |format| 
    format.html 
    format.json { render :json => @article } 
    end 
end 

その方法は、テンプレートはHTMLのヘッダーで、すべての標準的な要求のためにレンダリングされますが、あなたはJSONヘッダを持つAJAX要求を送信した場合、それはJSONに解析された記事をレンダリングします。

更新:

期待レスポンスとしてJSONを指定するには、次のAJAX呼び出しを使用してください:のparamsと

$.ajax({ 
    type: "GET", 
    dataType: "json", 
    url: "/articles/" + $(this).attr('value'), 
    success: function(data){} 
}); 
+0

レスポンスは、HTML応答です。基本的に私はGET呼び出しを行うobserve_field内の関数を持っています。だから私はそのページのフィールドを更新することができるようにフィールドを持っている要求にjsonオブジェクトを戻す必要があります。 – user140736

+0

さて、私は更新しました。それがよりうまくいくのだろうか? – DanneManne

0

もう一つの例:

JS:

$("#booking_addr_edit").click(function(event) { 
      var addressid = $('#appointment_order_currentaddress').val(); 
      $.ajax({ 
       type: "GET", 
       dataType: "json", 
       data: {address_id: addressid}, 
       url: '/booking/get_client_address', 
       success: function(data){ 
       $('#appointment_order_address').val(data[0].street +' '+ data[0].city + ' ' + data[0].state); 
       $('#appointment_order_phone').val(data[0].phone); 
       $('#appointment_order_apartment').val(''); 
       $('#booking_client_details').show(); 
       } 
      }); 
      event.preventDefault(); 
     }); 

コントローラ

私は戻って取得
def get_client_address 
    @address = Address.where(id: params[:address_id]) 
    respond_to do |format| 
     format.js { render :json => @address } 
    end 
    end 

ルート

match "booking/get_client_address" => "booking#get_client_address" 
関連する問題