对于这个特定的rails项目,我想保存一个http请求,所以我想将所有的javascript输出到已经在rails资产管道中的主体上。
有没有办法在rails中执行此操作?
答案 0 :(得分:2)
你很遗憾无法在开发过程中轻松使用它,因为文件是由Sprocket's server实时提供的,但是在生产中使用它非常简单:你只需要循环编译的脚本并将它们渲染成blob。
这是一个帮助,您可以使用而不是javascript_include_tag
来执行此操作:
module ApplicationHelper
if Rails.env.production?
def embedded_javascript_include_tag(*sources)
options = sources.extract_options!.stringify_keys
scripts = sources.uniq.map { |source|
File.read("#{Rails.root}/public/#{javascript_path(source)}")
}.join("\n").html_safe
content_tag(:script, scripts, options)
end
else
def embedded_javascript_include_tag(*sources)
javascript_include_tag(sources)
end
end
end
请注意,您仍然需要运行rake assets:precompile
才能生效。不要忘记设置环境以启用任何uglifiers和minifers! (RAILS_ENV=production rake assets:precompile
)