如何将渲染视图保存为静态文件?

时间:2009-09-01 21:52:40

标签: ruby-on-rails

My Rails 2.3应用程序以HTML / CSS或word文档生成页面。我想将该html文件保存为文件系统作为静态文件(即filename.html或filename.doc)。我计划使用完全呈现的页面和“保存报告”按钮进行预览操作。我们的用户稍后将访问这些静态文件。 (我将保存数据库的路径。)

有关如何执行此操作的任何建议吗?

我就创建一个文件并保存它,但我不确定如何将我的渲染视图放入其中。如果有人知道如何将它保存到S3,奖励积分!非常感谢!

2 个答案:

答案 0 :(得分:30)

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')

玩得开心,不要用剪刀跑。

答案 1 :(得分:0)

另一种方法是向控制器添加after_action,并使用response.body在该操作中访问呈现的内容。通过这种方式,您的控制器可以正常响应客户端,同时将呈现的内容保存到数据库中。