これは、Sprockets Rackエンドポイントを使用するSinatraアプリです。私がHTMLページからJavaScriptファイルを参照するとき、HTMLへのスクリプトファイルを単に入れるのではなく、相対パスを使ってその場所を指し示したいと思います。そうすることで、少なくともデバッグが強化されます。資産の相対パスを返すSprocketsメソッドはありますか?
スプロケットがconfig.ruで定義ラックがある:
map '/assets' do
SPROCKETS = Sprockets::Environment.new
SPROCKETS.append_path File.join(SPROCKETS.root, '/public/assets/js')
SPROCKETS.append_path File.join(SPROCKETS.root, '/public/assets/css')
SPROCKETS.append_path File.join(SPROCKETS.root, '/public/assets/fonts')
SPROCKETS.append_path File.join(SPROCKETS.root, '/public/assets')
SPROCKETS.paths.each{|path| puts path;}
SPROCKETS.js_compressor = :uglify
SPROCKETS.css_compressor = :scss
run SPROCKETS
end
HTML内のJavaScriptファイルを参照するには、私は次のように効果的に文字列として源を含むスクリプトタグ内に定義します(これは動作します私がやりたい何か)
<script><%= SPROCKETS["frontend.js.erb"].to_s %></script>
は、次のように独立したソースとしてファイルを参照する次のとおりです。
<script type="text/javascript" src="<%= SPROCKETS["frontend.js.erb"].filename %>"></script>
スプロケット「ファイル名」の方法は、完全なパスを返し、ページがローカルファイルシステムにアクセスすることはできませんので
Not allowed to load local resource: file:///C:/Bitnami/rubystack-2.2.5-3/projects/myapp/public/assets/js/frontend.js.erb
は明らかに、この問題が発生した:
そのオプションは次のメッセージを返します。私が必要とするのは、サーバーの相対パスを返すメソッドです。次のように
私は両方を試してみます。ありがとう。 –