Ruby on Rails资产管道无法正常工作

时间:2017-05-28 20:02:56

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

我刚刚在rails项目上做过ruby。我创建了一个名为' animals'以及索引操作的视图(index.html.erb)。我不想包含“应用程序”#39; javascript文件。

所以我创造了animals.js

文件的内容是

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap-sprockets
//= animals.coffee

我还将animals.js和animals.css添加到asset.rb

Rails.application.config.assets.precompile += %w( animals.js )
Rails.application.config.assets.precompile += %w( animals.css )

我的index.html.erb包含以下行

<%= stylesheet_link_tag 'animals', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'animals', 'data-turbolinks-track' => true %>

当我检查服务器生成的源代码html代码时,我看到jquery scipts没有被包含在页面中。它只是animal.js文件。

<head>
   <meta name="viewport" content="width=device-width, initial-  scale=1.0">
   <title>Rails Omniauth</title>
   <meta name="description" content="Rails Omniauth">
   <link rel="stylesheet" media="all" href="/assets/animals.self-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b5433a495991b7852b855.css?body=1" data-turbolinks-track="true">
   <script src="/assets/animals.self-1d93d37bf2f830ac42e82eb68e3bb0040ece5d23533a05bf77f7407fd59178d3.js?body=1" data-turbolinks-track="true"></script>

</head>

为什么包含这些脚本的任何建议?

感谢。

2 个答案:

答案 0 :(得分:1)

我认为您的问题可能是您有两个名称相同的文件(但扩展名不同)。由于Rails资产助手同等对待coffescript和js文件,因此这是不明确的:

<%= javascript_include_tag 'animals', 'data-turbolinks-track' => true %>

它应该加载哪个文件?我猜测它按字母顺序排在第一位,即animals.coffee

要解决此问题,请将链轮清单移至animals.coffee并移除animals.js文件。

# app/assets/animals.coffee
#= require jquery
#= require jquery_ujs
#= require turbolinks
#= require bootstrap-sprockets
#= require_self
alert 'Hello World'

答案 1 :(得分:0)

您可以删除animals.coffee文件,并且application.js文件中可能需要animals.js才能在项目中使用您的js代码。