Ruby 解决了的!如何在Rails应用程序中连接javascript文件?

Ruby 解决了的!如何在Rails应用程序中连接javascript文件?,ruby,ruby-on-rails-4,ruby-on-rails-5,Ruby,Ruby On Rails 4,Ruby On Rails 5,我正在编写一个简单的RubyonRails培训应用程序,并使用语义UICSS框架。 从下拉菜单中,需要为jquery编写一些代码。 如果我直接在html代码中编写.js代码,它就会工作。 如果我把它放在一个单独的文件app/assets/javascripts/dropdown.js中,这段代码将停止工作。但是如果使用.coffee,代码将再次工作! 如何将js文件连接到Rails 因此,我有javascript/dropdown.js。我试图将它包含在application.js文件中,虽然这

我正在编写一个简单的RubyonRails培训应用程序,并使用语义UICSS框架。 从下拉菜单中,需要为jquery编写一些代码。 如果我直接在html代码中编写.js代码,它就会工作。 如果我把它放在一个单独的文件app/assets/javascripts/dropdown.js中,这段代码将停止工作。但是如果使用.coffee,代码将再次工作! 如何将js文件连接到Rails

因此,我有javascript/dropdown.js。我试图将它包含在application.js文件中,虽然这不是必需的,但它不起作用。 我直接在application.js中编写此代码-不起作用


解决方案: 我犯了一个语法错误。我把方法
$(document.ready)中的结束括号弄混了。.coffee文件工作正常,因为没有括号!不要在晚上编码,大脑工作不好。我在早上发现了我的错误。
P.S.因此,我在dropdown.js中使用了
$(document).on('turbolinks:load',function(){})
。如果使用“turbolinks:load”
,下拉菜单将在网站的所有页面上工作,而不仅仅是在索引页面上



application.js

//= require jquery
//= require semantic-ui
//= require rails-ujs
//= require dropdown
//= require activestorage
//= require turbolinks
//= require_tree .

$('.dropdown').dropdown({transition: 'drop'});

dropdown.js

//= require jquery
//= require semantic-ui
//= require rails-ujs
//= require dropdown
//= require activestorage
//= require turbolinks
//= require_tree .

$('.dropdown').dropdown({transition: 'drop'});

dropdown.js不起作用

$( document ).ready(function() {
  $('.dropdown').dropdown({transition: 'drop'});
})
\u header.html.erb

_header.html.erb

<div class="ui secondary menu">
  <div class="ui container">
    <%= link_to "Sample App", root_path, id: "logo", class: "item header" %>
    <div class="right menu">
      <%= link_to "Home",   root_path, class: "item" %>
      <%= link_to "Help",   help_path, class: "item" %>
      <% if logged_in? %>
        <%= link_to "Users", '#', class: "item" %>
        <div class="ui dropdown item">
        Account <i class="dropdown icon"></i>
        <div class="menu">
          <%= link_to "Profile", current_user, class: "item" %>
          <%= link_to "Settings", '#', class: "item" %>
          <%= link_to "Log out", logout_path, method: "delete", class: "item" %>
        </div>
      </div>
      <% else %>
        <%= link_to "Log in", login_path, class: "item" %>
      <% end %>
    </div>
  </div>
</div>
<script>
  // Script from dropdown: assets/javascript/dropdown.js
  //$('.dropdown').dropdown({transition: 'drop'});
</script>

\u header.html.erb
账户
//下拉列表中的脚本:assets/javascript/dropdown.js
//$('.dropdown').dropdown({transition:'drop'});

您是否收到任何控制台错误?尝试将
console.log
语句放入
$(document.ready)的回调中。消息记录成功吗?控制台中没有错误。
alert()
调用在application.js文件和dropdown.js文件中均有效,无需
$(文档)。ready
如果
alert()
调用正常,则表示该文件可用。问题可能在jQuery和TurboLink之间。尝试将
$(文档)更改为
$(文档)。在('turbolinks:load',yourCallback)
上,您是否收到任何控制台错误?尝试将
console.log
语句放入
$(document.ready)的回调中。消息记录成功吗?控制台中没有错误。
alert()
调用在application.js文件和dropdown.js文件中均有效,无需
$(文档)。ready
如果
alert()
调用正常,则表示该文件可用。问题可能在jQuery和TurboLink之间。尝试将
$(文档).ready
更改为
$(文档).on('turbolinks:load',yourCallback)