Javascript Rails 4,Turbolink在呈现部分

Javascript Rails 4,Turbolink在呈现部分,javascript,jquery,ruby-on-rails,twitter-bootstrap,Javascript,Jquery,Ruby On Rails,Twitter Bootstrap,我有一个配置了一些javascript的表单。javascript由Turbolink处理的加载事件加载: //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的表单。javascript由Turbolink处理的加载事件加载:

//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);
如果我渲染了一个部分,则
App.init()
代码未执行,并且我的应用程序配置不好

//new.js.erb
$("#my-modal").html("<%= j( render 'form') %>");
$("#my-modal").modal("show"); //The partial is inside a modal
需要在部分渲染后执行js代码,因为我需要配置一些Jquery插件来定制模式表单

该模式是一种典型的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>
/\u form.html.erb
&时代;
新的
    ... ...
    试试:

    $(document).on('page:change', function () {
      // Actions to do
    });
    
    在您的情况下,简单地将js调用中的“page:load”行替换为:

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

    您是否尝试过“page:change”而不是“page:load”是的,请参见下一个答案中的注释我无法使用您的解决方案,因为每次页面更改都会触发事件更改,但我只想在呈现分部时执行App.init()。您反对在分部视图中添加App.init js调用吗?
    $(document).on('page:change', ready);