2011-01-02 3 views
1

誰かが学習のヒント(チュートリアルを知っていますか?)を知っている場合、ビューのリンクがクリックされたときに、インデックスページにajaxを介してリモートでロードする方法を教えてください。私はリンクのタイトルの下に表示されるビューをしたいと思います。インデックスページにajaxでレコードを表示しますか?

ベスト、あなたのコントローラで エリオット

答えて

1

、あなたがしたい項目に部分をレンダリング:jQueryのを使用して

def show 
    @item = Item.get(params[:id]) 
    respond_with (@item) do |format| 
    format.html{ render :partial => 'item' } 
    format.js{ render :partial => 'item', :layout=>false } 
    end 
end 

そして、あなたができる:

$('a#my_loader').bind('click', function(){ 
    $.ajax({url: "/items/1", 
      type: "GET", 
      success: function(data) { 
      $('#items').append(data); 
      } 
    }); 
}); 

あなたはでしょうID 'my_loader'のタグと 'items'のIDを持つdivまたはulを必要とします。

+0

唯一注意したいのは、彼はリンクのタイトルの真下に表示されている部分を望んでいるということです。私は '$(これ)'が$ .ajax )コールでは、success関数を別々に定義すると '$(this) 'を使うことができます。あるいは、バインドされた関数が' event'パラメータを受け取り、彼はその方法でリンクをターゲットできます。 – Samo

0

私はstefのようにしたいと思いますが、マイナーな変更を加えました。

$('a#my_loader').click(function() { 
    var success = function(response) { 
    $(this).append(response); 
    } 

    $.get("items/" + $(this).attr('item_id'), success); 

} 

これは、あなたがターゲットとしているオブジェクトのidはもちろんitem_id

として知られているあなたのリンクの属性に格納されていることを前提として、あなたはそのHTMLが既に存在するか否かを確認したいかもしれませんAJAX呼び出しを行う前に、呼び出しを行わずに部分を2回追加する必要があります。