2009-09-01 18 views
13

My Rails 2.3アプリは、HTML/CSSまたは単語docとしてページを生成します。私は静的なファイル(すなわちfilename.htmlまたはfilename.doc)としてファイルシステムにそのhtmlファイルを保存したいと思います。私は、完全にレンダリングされたページと「レポートを保存」ボタンを使ってプレビューアクションを実行する予定です。ユーザーは後でこれらの静的ファイルにアクセスします。 (私はdbのパスを保存します)レンダリングビューを静的ファイルとして保存する方法は?

これを行う方法の任意の提案は?

私はファイルを作成して保存していますが、レンダリングされたビューをどのように取得するかはわかりません。誰かがそれをS3まで保存する方法を知っているならば、ボーナスポイント!どうもありがとう!

答えて

27

render_to_stringはあなたの友人です。 1つの文字列でそれを持って、通常の方法でファイルにそれを燃やす。

class FooController 
    def save_foo_to_disk 
    data = render_to_string(:action => :index) 
    File.open(file_path, "w"){|f| f << data } 
    flash[:notice] = "saved to #{file_path}" 
    end 
end 

S3までは、aws-s3 gemを参照してください。あなたが何をしているのかは分かります。使い方はこれと少し似ています。

AWS::S3::Base.establish_connection!(
    :access_key_id  => 'abc', 
    :secret_access_key => '123' 
) 
S3Object.store(file_name, data, 'bucket-name') 

ハサミで楽しく遊んではいけません。

+0

render_to_string !!!それは素晴らしいです。 ADwRの短い段落に隠されています。魅力のように働いた。すべてのセーブが有効になると、S3が次に実行されます。ありがとう、トン! – antm

0

after_actionをコントローラに追加し、そのアクションでresponse.bodyを使用してレンダリングされたコンテンツにアクセスします。このようにして、コントローラは通常通りクライアントに応答し、レンダリングされたコンテンツをデータベースに保存することができます。

関連する問題