My Rails 2.3應用程序以HTML/CSS或Word文檔生成一個頁面。我想將該文件作爲靜態文件保存到文件系統(即filename.html或filename.doc)。我計劃預覽操作w /完全呈現的頁面和「保存報告」按鈕。我們的用戶稍後將訪問這些靜態文件。 (我會保存路徑到數據庫。)如何將呈現的視圖保存爲靜態文件?
對於如何做到這一點的任何建議?
我儘可能創建一個文件並保存它,但我不知道如何讓我的渲染視圖。如果有人知道如何將它保存到S3,可以獲得獎勵積分!非常感謝!
My Rails 2.3應用程序以HTML/CSS或Word文檔生成一個頁面。我想將該文件作爲靜態文件保存到文件系統(即filename.html或filename.doc)。我計劃預覽操作w /完全呈現的頁面和「保存報告」按鈕。我們的用戶稍後將訪問這些靜態文件。 (我會保存路徑到數據庫。)如何將呈現的視圖保存爲靜態文件?
對於如何做到這一點的任何建議?
我儘可能創建一個文件並保存它,但我不知道如何讓我的渲染視圖。如果有人知道如何將它保存到S3,可以獲得獎勵積分!非常感謝!
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')
玩得開心,不要用剪刀跑。
另一種方法是將after_action
添加到控制器,並在該動作中使用response.body
來訪問呈現的內容。通過這種方式,您的控制器可以像往常一樣響應客戶端,同時將呈現的內容保存到數據庫中。
render_to_string !!!這太妙了。在ADwR中隱藏一小段。像魅力一樣工作。一旦我完成所有的保存工作,S3就會成爲下一個。萬分感謝! – antm 2009-09-01 22:16:11