0

我的下载 zip 有问题。它工作正常,但 build 方法呈现 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
4

1 回答 1

1

我有一个解决您的相对路径问题的方法。如果您正在生成index.html文件的内容,您可以替换生成内容中的路径。

有一行#48data = render_to_string :build. 在下面的行中,只需将所有"/"起始路径替换为相对版本 ( "./"),如下所示:

data.gsub!('<script type="text/javascript" src="/', '<script type="text/javascript" src="./')
data.gsub!('<link href="/', '<link href="./')

然后你应该让它工作。如果您也想对图像执行此操作,只需执行类似的替换规则。

于 2013-09-30T14:09:22.567 回答