私はこれに対して2日間、頭を上げています。私は大いに欲求不満で、検索でこれに関する情報を見つけることができないようです。Rails 3、ブートストラップモーダルリモート呼び出しの複数のレイヤー
問題です。私は別のコントローラからいくつかのHTMLをロードするために:remote => trueリンクを使用しています。
$('.managed_locations').bind('ajax:complete', function(evt, xhr, status){
$('#locations_modal').modal('show')
$('#locations_modal').html(xhr.responseText);
});
これで、htmlが取得され、ブートストラップモーダルにダンプされ、モーダルが表示されます。これはうまくいきます。
しかし、モーダルの内部には、remote => trueも使用する形式があります。今、人生をもっと難しくするために、ボタンを押すとフォームをクローンして表示します。したがって、ユーザーは多くのフォームを持つことができます。
今問題です。フォームが送信されるたびに、通常のページのように読み込まれます。これは:remote => trueが無視されているかのようです。しかし、これはモーダルでしかありません。モーダルコントローラーを単独でロードするだけでうまくいきます。また、別のjqueryライトボックスを使用する前にこれを開発していましたが、正常に動作していました。私はちょうど一貫性のためにブートストラップを切り替えています。
私の最初の考えは、jquery_ujs.jsが新しいフォームを見つけられないということです。そこで、フォーム要素を出力するコードをいくつか追加しました。
コンソールに出力$("#log_events").click(function() {
$(document).find(".new_stored_physical_location").each(function() {
console.log($(this).data());
console.log($(this).data('events'));
});
return false;
});
:
Object { type="html", remote=true}
Object { ajax:complete=[1]}
だから私はイベントはjQueryのに設定されていることがわかります。これらのフォームのそれぞれは:remote => trueであり、要求が完了したときのajaxイベントを持ちます。しかし、それはちょうど私が提出するヒット時には、アヤックスのリクエストをしていない。
ajaxリクエストがフォームから起こることを確認するために必要なものがありますか? data()はうまく見え、データ( 'events')はうまく見えます。しかし、私が見る必要がある他のイベント/バインディングがありますか?
今モーダルからロードされているhtmlがレイアウトをロードしています。しかし、私はそれをレイアウトなしで、レイアウトなしでやってきました。それは私のナッツを運転しています。助けてくれてありがとう。
編集:いくつか余分な奇妙さ。モーダルは、いくつかの追加のリモートリンクもロードします。これらのリンクはすべて正しく動作しています。動作していないようなフォームリンクのみです。