【问题标题】:Rendering Rails entity as file将 Rails 实体渲染为文件
【发布时间】:2014-09-22 06:13:44
【问题描述】:

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

考虑有一个实体Book 包含许多Pages,并考虑这个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,用户将看到的HTML 内容!也就是说,实际调用的不是以页面id为参数的PagesController/show动作...

我怎样才能做到这一点?

提前谢谢你!

【问题讨论】:

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


【解决方案1】:

我不认为 params 哈希被传递给 render_to_string 方法。

试试这个答案How to pass variables to render_to_string?

【讨论】:

    猜你喜欢
    • 2021-01-05
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    相关资源
    最近更新 更多