我有一个在Rails中似乎很难解决的问题。
考虑有一个包含许多Pages的实体Book,并认为这个Pages有一个包含(听起来可能很奇怪)文本的text属性。更准确地说,它是HTML码,用户在访问pages/some_page_id/show时通常会看到这个文本。取而代之的是,当用户访问books/some_book_id/show时,他们会看到一本书的所有页面的“索引”。
现在考虑我想让用户“下载”一本书。这本书将以zip的形式下载,其中每个页面都包含一个HTML文件。
我对大多数文章都很满意,只有一个例外:当调用BooksController方法时,设法在文件上呈现一个Page。
我实际想出的是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这会导致每个页面都有一个文件...但它的内容是用户在没有任何params[:download]的情况下调用BooksController/show时所看到的超文本标记语言的内容!也就是说,实际调用的不是以页面id作为参数的PagesController/show操作……
我怎样才能做到这一点呢?
提前谢谢你!
发布于 2014-07-30 23:15:06
我不认为参数散列被传递给render_to_string方法。
https://stackoverflow.com/questions/25039611
复制相似问题