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