2017-07-06 18 views
0

私は神社を使って自分のレールアプリケーションからS3にファイルをアップロードしています。すべて正常に動作していますが、redcarpet gemを使用してそのファイルを表示する方法はわかりません。神殿にアップロードされたS3に保存されたMarkdownファイルをレンダリングする

<div> 
    <%= markdown("##title 
    * ") %> 
</div> 

と正常に動作します:私はこれを行うことができる。例えば

しかし、私はこれを行う場合:

<%= markdown(@rfile.rfile.url) %> 

は私にS3からのダウンロードリンクを示しています。

ファイルの内容は取得できますが、ファイルのリンクは取得できません。

答えて

1

@rfile.rfileを呼び出すとShrine::UploadedFileオブジェクトが返されます。#url以外の多くの便利なメソッドがあります。

<%= markdown(@rfile.rfile.read) %> 

しかし、この場合にはファイルを開くと読み取りが、閉じられていないことになる。このような方法でファイルの内容を取得しており、#readあります。 ASCII-8BITとUTF-8:だから、ブロックと#openを呼び出し、きちんと今

<%= markdown(@rfile.rfile.open(&:read)) %> 
+0

私はこのエラー '互換性のない文字エンコーディングを取得していますように書くことができ得られたIOオブジェクト、上#readを呼び出す方が良いでしょう'フッターで、フッターを外すとうまくいきます。ある時点でエンコーディングを指定する必要がありますか? – exsnake

+0

nevermindこの '%% yield.force_encoding(Encoding :: UTF_8)%>で修正しました。 'ありがとう! – exsnake

関連する問題