在 Rails 中重定向后脚本不工作
Script not work after redirect in Rails
我的页面上有一个带有咖啡脚本的清除按钮
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("")
当我直接访问此页面的 url 即 localhost:3000/customers/new
时效果很好
但是当我使用导航 link 访问此页面时它无法工作
<%= link_to "Add", new_customer_path %>
我使用chrome调试我的脚本,当我使用nav访问这个页面然后点击清除按钮时,它似乎没有进入功能块。脚本文件似乎没有被加载。我不明白为什么会这样。
这很可能是因为 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。
我的页面上有一个带有咖啡脚本的清除按钮
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("")
当我直接访问此页面的 url 即 localhost:3000/customers/new
但是当我使用导航 link 访问此页面时它无法工作
<%= link_to "Add", new_customer_path %>
我使用chrome调试我的脚本,当我使用nav访问这个页面然后点击清除按钮时,它似乎没有进入功能块。脚本文件似乎没有被加载。我不明白为什么会这样。
这很可能是因为 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。