在Rails中重定向后脚本无法正常工作

时间:2017-04-24 08:31:13

标签: ruby-on-rails ruby coffeescript asset-pipeline assets

我的页面上有一个带有咖啡脚本的清晰按钮

HTML

<div class="containerNew">
<%= form_for @customer, :url => customers_path do |f| %>
<table id="createNewCustomer">
    <tr>
        <td colspan="2">Input</td>
    </tr>
    <tr>
        <td class="title">
            <%= f.label :machine_id, "Error Machine:" %>
        </td>
        <td class="content">
            <%= select("customer", "machine_id", Machine.all.collect {|m| [ m.name, m.id ] }, { include_blank: false }) %>  
        </td>
    </tr>
    <tr>
        <td class="title">
            <%= f.label :error_info, "Error Info:" %>
        </td>
        <td class="content">
            <%= f.text_area :error_info %>
        </td>
    </tr>
</table>
<div class="bottomBtnArea">
    <%= f.submit "Submit" , class:"button btn btn-primary" %>
    <input type="button" name="clear" value="clear" id="clearBtn" class="btn btn-default">
</div>
<% end %>

咖啡

$ ->
  $('#clearBtn').click ->
    $("#customer_machine_id").get(0).selectedIndex = 0
    $("textarea").val("")

当我直接访问此网页的网址localhost:3000/customers/new

时效果很好

但是当我使用导航链接访问此页面时,它无法正常工作

<%= link_to "Add", new_customer_path %>

我使用chrome来调试我的脚本,当我使用nav访问此页面然后单击清除按钮时,它似乎没有进入功能块。脚本文件似乎没有被加载。我无法弄清楚它为什么会发生。

1 个答案:

答案 0 :(得分:0)

这很可能是因为Turbolinks,一个Rails功能,可以进行一些神奇的缓存并防止jQuery的页面加载触发器正常工作。之前已经回答过这个问题(例如here) - 解决方案是添加一个触发器来加载关于Turbolinks加载事件的JS函数,而不是jQuery常用的$(document).ready钩。假设您正在使用Rails 5,那么应该这样做:

$(document).on 'turbolinks:load', ->
  $('#clearBtn').click ->
      $("#customer_machine_id").get(0).selectedIndex = 0
      $("textarea").val("")

有关详细信息,请查看turbolinks documentation