2009-09-01 58 views
13

My Rails 2.3應用程序以HTML/CSS或Word文檔生成一個頁面。我想將該文件作爲靜態文件保存到文件系統(即filename.html或filename.doc)。我計劃預覽操作w /完全呈現的頁面和「保存報告」按鈕。我們的用戶稍後將訪問這些靜態文件。 (我會保存路徑到數據庫。)如何將呈現的視圖保存爲靜態文件?

對於如何做到這一點的任何建議?

我儘可能創建一個文件並保存它,但我不知道如何讓我的渲染視圖。如果有人知道如何將它保存到S3,可以獲得獎勵積分!非常感謝!

回答

27

render_to_string是你的朋友。你把它放在一個字符串中,用通常的方法將它燒成文件。

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 2009-09-01 22:16:11

0

另一種方法是將after_action添加到控制器,並在該動作中使用response.body來訪問呈現的內容。通過這種方式,您的控制器可以像往常一樣響應客戶端,同時將呈現的內容保存到數據庫中。