为什么jQuery不能在我的rails 5 app中运行?

时间:2017-06-21 21:01:39

标签: jquery ruby-on-rails turbolinks

我正在尝试在我的新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!"

点击时没有提醒。没有错误,服务器运行和页面呈现很好,在控制台中什么都没有。

感谢您的帮助。

4 个答案:

答案 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:

  1. Gemfile $ bundle删除turbolink。
  2. app / assets / javascripts / application.js
  3. 删除//= require turbolinks
  4. app / views / layouts / application.html.erb 中删除两个"data-turbolinks-track" => true哈希。