2016-04-29 8 views
3

私はいくつかのjavascriptで設定されたフォームを持っています。私はApp.init()コードが実行されていませんし、私のアプリケーションがうまく設定されていない部分をレンダリングする場合Rails 4、Turbolinkは部分的レンダリング後にjavascriptを実行します

//app/assets/javascripts/init.js 
var ready = function() { 
    App.init(); //I configure some components of _form.html.erb partial 
}; 
$(document).ready(ready); 
$(document).on('page:load', ready); 

:javascriptのはTurbolinkによって処理負荷のイベントにロードされています。

//new.js.erb 
$("#my-modal").html("<%= j(render 'form') %>"); 
$("#my-modal").modal("show"); //The partial is inside a modal 

パーシャルがレンダリングされた後でコードを実行できますか?このような 何か:私はモーダルフォームをカスタマイズするために、いくつかのjQueryプラグインを設定する必要がbecouseレンダリングされた部分の後JSコードを実行するために必要で

$(document).on('partial:render', ready); //Concept 

モーダルは、古典的なTwitterのブートストラップモーダルです:

//_form.html.erb 
<div class="modal-dialog" role="document"> 
    <div class="modal-content"> 
    <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
     <span aria-hidden="true">&times;</span> 
     </button> 
     <div class="row"> 
     <div class="col-sm-offset-3 col-sm-9"> 
      <h3 class="modal-title" id="myModalLabel">new</h3> 
     </div> 
     </div> 
    </div> 

    <%= simple_form_for(...) do |f| %> 
     <div class="modal-body"> 
      <ul class="errors"></ul> 
      <%= f.error_notification %> 

      <%= render "companies/fields", f: f %> 
      ... 
      ... 
     </div> 
    <% end %> 
    </div> 
</div> 
+0

"page:load"の代わりに "page:change"を試してみましたか? – bkunzi01

+0

はい、次の回答のコメントを参照してください – user1066183

答えて

2

してみますと、あなたのjsの呼び出しでライン:

:あなたのケースでは

$(document).on('page:change', function() { 
    // Actions to do 
}); 

'ロードページ' を置き換えるsimpley

$(document).on('page:change', ready); 
+0

ページが変更されるたびにイベントの変更がトリガされるが、パーシャルがレンダリングされたときにのみApp.init()を実行するため、ソリューションを使用できない – user1066183

+0

App.init jsコールをパーシャル見る? – bkunzi01

関連する問題