渲染Rails实体作为文件

时间:2014-07-30 14:35:42

标签: html ruby-on-rails ruby views rendering

我遇到了一个在Rails中难以解决的问题。

考虑让实体Book包含许多Pages,并考虑具有属性Pages的{​​{1}},其中包含(尽管听起来很奇怪)文本。更确切地说,它是HTML代码,用户在访问text时通常会显示此文本。相反,当用户转到pages/some_page_id/show时,会向用户显示所有页面的“索引”。

现在考虑我想让用户“下载”一本书。该书将作为zip包下载,其中包含每个页面的HTML文件。

对于大多数段落我都很好,除了一个:在调用books/some_book_id/show方法时管理文件上的Page

我实际想出的是BooksController中的这一行:

BooksController/show

这导致每个页面都有一个文件......但它的内容是用户在没有任何def show if params[:download] @book.pages.each do |p| content = render_to_string(:controller => "pages", :action => "show", :page_id => p.id) File.open(file_name_from_book_name_and_page_number) do |f| f.write(content) end end end 的情况下调用BooksController/show时会看到的HTML内容!也就是说,实际调用的不是params[:download]动作,页面标识为参数...

我怎么能实现这个目标?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

我认为params hash不会传递给render_to_string方法。

尝试此回答How to pass variables to render_to_string?