我正在尝试在我的新Rails5应用程序中编写我的第一个js代码,似乎无法使Jquery工作,猜测它是配置/环境问题但是尽管我所有的搜索和确认更改我似乎无法得到它运行。任何人都能看出我做错了什么吗?:
的Gemfile;
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
application.html.erb;
<title>MyEngine</title>
<!-- Gon::Base.render_data -->
<%= Gon::Base.render_data %>
<%= csrf_meta_tags %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
new.html.erb;
<%= link_to 'Remove Employee', '#', id: 'hide-employee' %>
quotes.coffee;
$(document).on "page:change", ->
$('#hide-employee').click ->
alert "Clicked!"
点击时没有提醒。没有错误,服务器运行和页面呈现很好,在控制台中什么都没有。
感谢您的帮助。
答案 0 :(得分:2)
尝试使用turbolinks:改为加载。
$(document).on 'turbolinks:load', ->
$('#hide-employee').click ->
alert 'Clicked!'
答案 1 :(得分:1)
页面:更改事件在turbolinks-classic中定义。现在已弃用此版本,您可以自行查看。
相反,您可以使用turbolinks:load or turbolinks:render or turbolinks:before-render。
答案 2 :(得分:1)
对于那些来到这里的人,因为他们有Rails 5.1, jQuery不再是默认依赖。来自release notes:
默认情况下,早期版本的Rails中需要jQuery来提供数据远程,数据确认和Rails的Unobtrusive JavaScript产品的其他部分等功能。它不再是必需的,因为UJS已被重写为使用普通的,普通的JavaScript。此代码现在作为rails-ujs在Action View中发布。
如果需要,您仍然可以使用jQuery,但默认情况下不再需要它。
要重新添加,请添加到Gemfile
:
gem 'jquery-rails' # Use jquery as the JavaScript library
然后
$ bundle
答案 3 :(得分:0)
确保您 app / assets / javascripts / application.js 包含:
//= require jquery
//= require jquery-ujs
注意:如果您使用的是Rails 5.1,则可以省略//= require jquery_ujs
,而不是//= require rails-ujs
。
另外,请考虑更加隐蔽地去除涡轮。这样做解决了更多的资产管道问题,而不是我在意。无论如何,我感觉它并没有为你提供太多价值。 : - )
使用以下内容删除turbolink:
$ bundle
删除turbolink。//= require turbolinks
"data-turbolinks-track" => true
哈希。