Ruby Rails 资产管道无法正常工作
Ruby on Rails asset pipeline doesn't work properly
我刚才一直在 ruby 项目上工作 rails。我创建了一个名为 'animals' 的控制器和一个用于索引操作的视图 (index.html.erb)。我不想包含 'application' 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>
关于为什么包含这些脚本的任何建议?
谢谢。
我认为您的问题可能是您有两个同名文件(但扩展名不同)。由于 Rails asset helpers 平等对待 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'
您可以删除 animals.coffee 文件,并且可以在 application.js 的文件中要求 animals.js 以便在您的项目中使用您的 js 代码。
我刚才一直在 ruby 项目上工作 rails。我创建了一个名为 'animals' 的控制器和一个用于索引操作的视图 (index.html.erb)。我不想包含 'application' 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>
关于为什么包含这些脚本的任何建议?
谢谢。
我认为您的问题可能是您有两个同名文件(但扩展名不同)。由于 Rails asset helpers 平等对待 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'
您可以删除 animals.coffee 文件,并且可以在 application.js 的文件中要求 animals.js 以便在您的项目中使用您的 js 代码。