是否有 returns 资产相对路径的 Sprockets 方法?
Is there a Sprockets method that returns the relative path of the asset?
这是一个使用 Sprockets Rack 端点的 Sinatra 应用程序。当我从 HTML 页面引用 JavaScript 文件时,我想使用相对路径指向它的位置,而不是仅将脚本文件包含到 HTML 中。这样做至少会加强调试。
链轮齿条在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>
那个选项returns下面的消息:
Not allowed to load local resource: file:///C:/Bitnami/rubystack-2.2.5-3/projects/myapp/public/assets/js/frontend.js.erb
很明显,出现这种情况是因为Sprockets "filename"方法returns完整路径和页面无法访问本地文件系统。我需要的是一种returns服务器相对路径的方法。
好吧,又是一个拍脑袋的时刻...
应该使用我输入的 config.ru 中定义的标准资产路径,如下所示:
<script type="text/javascript" src="assets/frontend.js.erb"></script>
效果很好。
您尝试过使用 sprockets-helpers
gem 吗?这适用于最新的链轮版本。 gem 允许您使用辅助方法来生成您所需要的内容。如果您使用的是 SASS,您还可以检查 sprockets-sass
gem。非常适合 Sprockets 2.x 和 3.x。
这是一个使用 Sprockets Rack 端点的 Sinatra 应用程序。当我从 HTML 页面引用 JavaScript 文件时,我想使用相对路径指向它的位置,而不是仅将脚本文件包含到 HTML 中。这样做至少会加强调试。
链轮齿条在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>
那个选项returns下面的消息:
Not allowed to load local resource: file:///C:/Bitnami/rubystack-2.2.5-3/projects/myapp/public/assets/js/frontend.js.erb
很明显,出现这种情况是因为Sprockets "filename"方法returns完整路径和页面无法访问本地文件系统。我需要的是一种returns服务器相对路径的方法。
好吧,又是一个拍脑袋的时刻...
应该使用我输入的 config.ru 中定义的标准资产路径,如下所示:
<script type="text/javascript" src="assets/frontend.js.erb"></script>
效果很好。
您尝试过使用 sprockets-helpers
gem 吗?这适用于最新的链轮版本。 gem 允许您使用辅助方法来生成您所需要的内容。如果您使用的是 SASS,您还可以检查 sprockets-sass
gem。非常适合 Sprockets 2.x 和 3.x。