【问题标题】:Rails 2 How to Render a view as a stringRails 2 如何将视图呈现为字符串
【发布时间】:2013-09-18 13:35:39
【问题描述】:

我正在使用 PDFKit 从视图中生成 pdf,但我似乎找不到一种简单的方法将 url 的输出存储为文本字符串。

我试过了:

html = render_to_string(:template => "/portal/quotes/order/" + quote_id, :layout => false)

在这种情况下,quote_id 为 216,但我收到此错误:

Missing template /portal/quotes/order/216.erb in view path app/views

我所有的观点都是.rhtml 格式,不知道从哪里得到.erb 扩展名。

在浏览器中导航到时,该 url 会按预期工作。

【问题讨论】:

  • 抱歉,我可能误会了 - 您是否在寻找类似 @​​987654321@ 的内容
  • 谢谢,不是我要找的,基本上我只是想要一个网页的输出,它恰好是我的应用程序中的一个视图
  • "erb" 是默认使用的格式,如果你没有定义你想要哪一种,尽量使用"/portal/quotes/order/#{quote_id}.html.rhtml"(我不知道你的观点的确切扩展名,使用合​​适的)
  • @MrYoshiji - 谢谢,会尝试,但不要认为它会起作用,因为该格式的 url 只会导致错误,url 是 http://localhost/portal/quotes/order/216(无文件扩展名)作为视图文件本身是order.rhtml
  • @MrYoshiji 谢谢,不得不稍微改变语法,html = render_to_string(:template => "/quotes/order.rhtml", :layout => false, :locals => { :id => quote_id }) 这是我的应用程序中视图的物理路径,但我使用portal 部分来决定使用哪个布局。这只会导致错误,因为它无法在视图中找到动态信息,所以我假设这个请求不会通过控制器?不确定我想要的是否可行,使用RestClient 之类的内容获取页面内容会更好吗?

标签: ruby-on-rails ruby ruby-on-rails-2 pdfkit


【解决方案1】:

我就是这样解决的:

html = render_to_string(:template => "/quotes/order.rhtml", :layout => false, :locals => { :id => quote_id })

template 值是模板在views 目录中的物理路径,而不是 url。

【讨论】:

    【解决方案2】:

    您需要在模板参数上传递模板路径,而不是相对 url。您要使用的模板路径应该是 'orders/show' 或类似的东西。这必须位于 views 文件夹中。

    【讨论】:

      猜你喜欢
      • 2013-10-19
      • 1970-01-01
      • 2011-01-28
      • 2016-10-10
      • 2013-09-28
      相关资源
      最近更新 更多