私はこの質問に似た問題を経験しています: Railsアセットパイプラインにapplication.jsマニフェストに必要なファイルが含まれていない ただし、その質問は閉じられたので、私は再質問しますが、私の詳細状況。)
Ruby 2.0.0、Rails 3.2.8、OSX 10.7.5、Chrome 28.0.1500.95
「/ app/assets/javascripts」に配置されたファイルは、「/ public/assets」にコンパイルまたは表示されていないようです
このtest.jsファイルなどのファイルをapp/assets/javascriptsに配置した場合:
alert("Hello!");
アプリのページをリロードすると、このアラートが表示されます。 (私はRyan Batesが彼の アセットパイプラインのレールキャスト を6:30までビデオで再現しています)ただし、アラートは表示されません。
これをデバッグするために行ったいくつかのテスト。
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
// removed /sitewide from require_tree
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require_tree .
# Enable the asset pipeline
config.assets.enabled = true
"/Users/Anders/Dropbox/dev/suggestion-box-app/app/assets/images",
"/Users/Anders/Dropbox/dev/suggestion-box-app/app/assets/javascripts",
"/Users/Anders/Dropbox/dev/suggestion-box-app/app/assets/stylesheets",
"/Users/Anders/.rvm/gems/Ruby-2.0.0-p195@suggestion-box-app/gems/coffee-Rails-3.2.2/lib/assets/javascripts",
"/Users/Anders/.rvm/gems/Ruby-2.0.0-p195@suggestion-box-app/gems/jquery-Rails-3.0.4/vendor/assets/javascripts"
!!! 5
%html
%head
%meta{:charset => "utf-8"}/
%meta{:content => "width=device-width", :name => "viewport"}/
%meta{:content => "yes", :name => "Apple-mobile-web-app-capable"}/
%title My App
%script{:type=>"text/javascript", :src=>"//use.typekit.net/wjb6ybj.js"}
:javascript
try{Typekit.load();}catch(e){}
= stylesheet_link_tag "screen", :media => "all"
= csrf_meta_tags
= javascript_include_tag "application"
%body
#container
= render "layouts/flashes"
= yield
= render "layouts/footer"
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta content='width=device-width' name='viewport'>
<meta content='yes' name='Apple-mobile-web-app-capable'>
<title>My app</title>
<script src='//use.typekit.net/wjb6ybj.js' type='text/javascript'></script>
<script>
try{Typekit.load();}catch(e){}
</script>
<link href="/assets/screen.css?body=1" media="all" rel="stylesheet" type="text/css" />
<meta content="authenticity_token" name="csrf-param" />
<meta content="FqMtH+rs6or9HRx+RL4bWpQyLTNPM8BKLrcf/xZknP8=" name="csrf-token" />
<script src="/assets/application.js?body=1" type="text/javascript"></script>
</head>
<body>
<div id='container'>
....
</div>
</body>
</html>
/*!
* jQuery JavaScript Library v1.9.1
* http://jquery.com/
*
* Includes Sizzle.js
* http://sizzlejs.com/
*
* Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors
* Released under the MIT license
* http://jquery.org/license
*
* Date: 2013-2-4
*/
(function(e,t){function P(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:e.nodeType===1&&t?!0:n==="array"||n!=="function"&&(t===0||typeof t=="number"&&t>0&&t-1 in e)}function B(e){var t=H[e]={};return b.each(e.match(E)||[],function(e,n){t[n]=!0}),t}function I(e,n,r,i){if(!b.acceptData(e))return;var s,o,u=b.expando,a=typeof n=="string",f=e.nodeType,c=f?
[... jqueryの残りを除外]
test.jsファイルがここに表示されませんか?
問題が何であるかについての提案はありますか?この問題のデバッグに役立つ追加情報はありますか?助けてくれてありがとう!
問題は私のRails/gemバージョンに関連しているようです。 Rails 3.2.8からRails 3.2.14に更新した後(ラック宝石を1.4.1から1.4.5に更新する必要もありました)、問題は解決され、アセット/ javascriptsがコンパイルされ、public/assetsに追加されています。これを行う一部として完全に新しいgemsetを作成したことに注意してください。そのため、この問題はRailsバージョンとは関係なく、単に「破損した」gemセットの問題であり、再設定する必要がありました。作成した。
Railsは config.assets.precompile
にリストされているすべてのターゲットをコンパイルします。これらのターゲットはpublic/assets/
にコンパイルされます。その構成アイテムにはすでに"application.js"
およびその他のいくつかのターゲットが含まれているため、public/assets/
にプリコンパイルするotherターゲットを追加する必要があります。特定のターゲット用にコンパイルされるソースファイルは、ターゲットの名前に基づいて自動的に計算されます。たとえば、test.js
のターゲットは、app/assets/javascripts/test.js
またはapp/assets/javascripts/test.js.coffee
のどちらか存在する方からコンパイルされます。