2009-05-25 5 views
1

RJSテンプレートを使用してRailsとjqueryを使用して、さまざまなAJAXリクエストを実行しています。jquery getリクエストからレールRJSテンプレートを実行する

$('#tagging_flickr_photos').submitWithAjax(); 
$('#tag_submit').click(function() { 
    $('#flickr-photos-status').show(); 

}); 

これはRJSテンプレートとしてに転送し、その後、いくつかの処理を行い、フォームアクションを呼び出す:私は次のように私application.jsにフォームにハンドラを提出する添付私のAjaxのもののほとんどは

次のとおりです。

$("#flickr-photos-status").hide(); 
$("#flickr-photos").fadeIn(); 
$("#flickr-photos").html("<%= escape_javascript(render(:partial => 'flickr_photos_for_tagging_content')) %>"); 

これは治療法です。

今私は同じことをしようとしていますが、ドロップダウンで別の値を選択し、フォームを送信しないことに基づいています。 は、ここでドロップダウンにハンドラをアタッチするために私のjavascriptです:

$('#film_film_name_id').change(function() { 
    $.get('/admin_film/make_tags?film_name_id=' + $("#film_film_name_id").val() + '&film_speed_id=' + $("#film_film_speed_id").val()); 
}); 

私のコントローラメソッドは、RJSテンプレート(make_tags.js.erb)だけに転送し、いくつかの処理を行います。

$("#film_tags").val(<%[email protected]%>) 

しかし、テンプレート実行されていないようです。 私のログには、メソッドを呼び出してテンプレートをレンダリングするエントリが表示されますが、テンプレートに何を置いても何も起こらないようです。 私はそこにJavascriptアラートを入れましたが、起動しません。

問題は私のJavascriptハンドラをつけることと関係していると思いますが、私は何が欠けているのか分かりません。

ご協力いただきありがとうございます。

答えて

5

JavaScriptを期待しており、実行する必要があるとjQueryに伝えなければならないと思います。次のことを試してみて、それが動作するかどうかを確認:

$('#film_film_name_id').change(function() { 
    var url = '/admin_film/make_tags?film_name_id=' + $("#film_film_name_id").val() + '&film_speed_id=' + $("#film_film_speed_id").val() 
    $.ajax({ 
    type: 'GET', 
    dataType: 'script', 
    url: url 
    }); 
}); 

私は、コードをテストしていないとして、それが動作しない場合jQuery.ajax()にjQueryのドキュメントを確認してください。

+0

それは完璧に感謝しました! –

+0

ありがとうございます!私はこれと数時間戦ってきました。 – Chelsea

1

HI、

私はプロトタイプのライブラリを直接呼び出して、オブザーバを使用しています(jQueryのではない)

 <td><div id="outconditionnals_container"> 
       <% if [email protected]? then %> 
         <%= collection_select(:OUTconditionnal, :id, @milestone.howto.conditionnals, :id, :name, {:prompt => true}, {"index" => @outconditionnalID.to_s}) %> 
         <%= observe_field("OUTconditionnal_"[email protected]_s+"_id", 
           :url => { :action => :AJAX_selection_change }, 
           :with => "'id='+value+'&dir=out&type=conditionnal&milestoneID="[email protected]_s+"'", 
           :on => "changed")%>       
       <% end %> 
      </div> 
     </td> 

はその後、私のRJSは、他のいくつかのフォーム要素をrefereshするために自分の行動からレンダリングされます。

これが役に立ちます。

+0

ありがとう - 他の答えが私のために働いたが、私はそれが有用に見えるようにチャンスを得るときにオブザーバーのものを読み上げるだろう。 –

0

また、お使いになった$ .getでもかまいません。ここ
は髪型であなたの例です:

$('#film_film_name_id').change(function() { 
    $.get(
     '/admin_film/make_tags', // or something like '<%= make_tags_admin_film_path %>' 
     { 
     film_name_id: $("#film_film_name_id").val(), 
     film_speed_id: $("#film_film_speed_id").val() 
     }, 
     null, // you may define an additional callback here, if that makes sense 
     "script" 
    ); 
}); 
0

jQueryの方法getScript上記の推奨何ujhを行うための素敵な省略形です。

関連する問題