我遇到了一个在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]
动作,页面标识为参数...
我怎么能实现这个目标?
提前谢谢!
答案 0 :(得分:0)
我认为params hash不会传递给render_to_string方法。