0

zip のダウンロードに問題があります。正常に動作しますが、ビルド メソッドは 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、生成されたコンテンツのパスを置き換えることができます。

あなたがどこに行#48がありますdata = 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 に答える