我的下载拉链有问题。它工作正常,但构建方法呈现html文件并提供类似的链接:
<script src="/assets/impress.js?body=1" type="text/javascript"></script>
而我需要它是相对路径:
<script src="assets/impress.js?body=1" type="text/javascript"></script>
如何使用ruby删除链接开头的'/'。这是使用zip gem的代码部分。
def download
build
data = render_to_string :build
js_path = Rails.root.join("vendor", "assets", "javascripts")
zip = Zip::OutputStream.write_buffer do |out|
out.put_next_entry("index.html")
out.write(data)
out.put_next_entry("assets/impress.js")
out.write File.read js_path.join("impress.js")
end
zip.rewind
binary_zip = zip.sysread
send_data(binary_zip, {filename: "impress.zip"})
end
答案 0 :(得分:1)
我有一个解决你的相对路径问题的方法。如果要生成index.html
文件的内容,则可以替换生成内容中的路径。
您data = render_to_string :build
有一行#48。在下面的行中,它只是用相对版本("/"
)替换所有"./"
起始路径,如下所示:
data.gsub!('<script type="text/javascript" src="/', '<script type="text/javascript" src="./')
data.gsub!('<link href="/', '<link href="./')
然后你应该让它工作。如果你想对图像也这样做,只需实现类似的替换规则。