首页 \ 问答 \ Rails4:PDFKit缺少模板错误(Rails4: Template is missing error with PDFKit)

Rails4:PDFKit缺少模板错误(Rails4: Template is missing error with PDFKit)

我想生成PDF文件,所以我试图使用PDFKit但失败了。

单击链接时显示以下错误。

ActionView::MissingTemplate (Missing template /show with {:locale=>[:en], :formats=>[:pdf], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in:
  * "/usr/local/rvm/gems/ruby-2.3.0/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates"
  * "/home/ubuntu/workspace/app/views"
  * "/usr/local/rvm/gems/ruby-2.3.0/gems/web-console-2.0.0.beta3/app/views"

时间表\ show.html.erb

<% provide(:title, @schedule.title) %>
<%= render @schedules %>

schedules \ _schedule.html.erb

...
    <%= link_to "PDF", schedule_path(schedule.id, format: "pdf"), class: "btn btn-sm btn-default" %>
...

schedules_controller.rb

...
respond_to do |format|
  format.html # show.html.erb
  format.pdf do
    html = render_to_string template: "show"

    pdf = PDFKit.new(html, encoding: "UTF-8")

    send_data pdf.to_pdf,
      filename:    "#{@scheudles.id}.pdf",
      type:        "application/pdf",
      disposition: "inline"
  end
end
...

虽然我创建了show.pdf.erb_schedule.pdf.erb ,其内容与_schedule.pdf.erb相同,但结果是一样的。


I'd like to generate PDF file, so I am trying to use PDFKit but failing.

The following error was displayed when I click the link.

ActionView::MissingTemplate (Missing template /show with {:locale=>[:en], :formats=>[:pdf], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in:
  * "/usr/local/rvm/gems/ruby-2.3.0/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates"
  * "/home/ubuntu/workspace/app/views"
  * "/usr/local/rvm/gems/ruby-2.3.0/gems/web-console-2.0.0.beta3/app/views"

schedules\show.html.erb

<% provide(:title, @schedule.title) %>
<%= render @schedules %>

schedules\ _schedule.html.erb

...
    <%= link_to "PDF", schedule_path(schedule.id, format: "pdf"), class: "btn btn-sm btn-default" %>
...

schedules_controller.rb

...
respond_to do |format|
  format.html # show.html.erb
  format.pdf do
    html = render_to_string template: "show"

    pdf = PDFKit.new(html, encoding: "UTF-8")

    send_data pdf.to_pdf,
      filename:    "#{@scheudles.id}.pdf",
      type:        "application/pdf",
      disposition: "inline"
  end
end
...

Although I create show.pdf.erb and _schedule.pdf.erb which contents is the same as html.erb, the result is the same.


原文:https://stackoverflow.com/questions/39431808
更新时间:2024-04-21 20:04

最满意答案

您应该创建一个由servernamedatetime键入的字典

示例:from collections import defaultdict

lines = defaultdict(dict)
with open("file_parse.txt") as f:
    for line in f:
        parts = line.split()
        key = tuple(parts[1:3]) # unique key with servername and datetime
        lines[key][parts[0]] = parts[3]
        lines[key]["servername"] = parts[1]
        lines[key]["datetime"] = parts[3]
res = list(lines.values())
print(res)
# [
#    {'cpudile': 'NaN', 'cpunice': '0.0', 'cpunumber': '40.0', 'cpusystem': '0.0', 'cpuuser': '0.0', 'cpuwait': '0.0', 'datetime': 'NaN', 'servername': '1438084445'},
#    {'cpudile': 'NaN', 'cpunice': '0.0', 'cpunumber': '40.0', 'cpusystem': '0.0', 'cpuuser': '0.0', 'cpuwait': '0.0', 'datetime': 'NaN', 'servername': '1438084440'},
#    {'cpudile': 'NaN', 'cpunice': '0.0', 'cpunumber': '40.0', 'cpusystem': '0.0', 'cpuuser': '0.0', 'cpuwait': '0.0', 'datetime': 'NaN', 'servername': '1438084450'}
# ]

You should create a dictionary that is keyed by servername and datetime

Example: from collections import defaultdict

lines = defaultdict(dict)
with open("file_parse.txt") as f:
    for line in f:
        parts = line.split()
        key = tuple(parts[1:3]) # unique key with servername and datetime
        lines[key][parts[0]] = parts[3]
        lines[key]["servername"] = parts[1]
        lines[key]["datetime"] = parts[3]
res = list(lines.values())
print(res)
# [
#    {'cpudile': 'NaN', 'cpunice': '0.0', 'cpunumber': '40.0', 'cpusystem': '0.0', 'cpuuser': '0.0', 'cpuwait': '0.0', 'datetime': 'NaN', 'servername': '1438084445'},
#    {'cpudile': 'NaN', 'cpunice': '0.0', 'cpunumber': '40.0', 'cpusystem': '0.0', 'cpuuser': '0.0', 'cpuwait': '0.0', 'datetime': 'NaN', 'servername': '1438084440'},
#    {'cpudile': 'NaN', 'cpunice': '0.0', 'cpunumber': '40.0', 'cpusystem': '0.0', 'cpuuser': '0.0', 'cpuwait': '0.0', 'datetime': 'NaN', 'servername': '1438084450'}
# ]

相关问答

更多

相关文章

更多

最新问答

更多
  • 带有简单redis应用程序的Node.js抛出“未处理的错误”(Node.js with simple redis application throwing 'unhandled error')
  • 高考完可以去做些什么?注意什么?
  • Allauth不会保存其他字段(Allauth will not save additional fields)
  • Flask中的自定义中止映射/异常(Custom abort mapping/exceptions in Flask)
  • sed没有按预期工作,从字符串中间删除特殊字符(sed not working as expected, removing special character from middle of string)
  • 怎么在《我的世界》游戏里面编程
  • .NET可移植可执行文件VS .NET程序集(.NET Portable Executable File VS .NET Assembly)
  • 搜索字符串从视图中键入两个字段的“名字”和“姓氏”组合(Search Strings Typed from View for Two Fields 'First Name' and 'Last Name' Combined)
  • 我可以通过配置切换.Net缓存提供程序(Can I switch out .Net cache provider through configuration)
  • 在鼠标悬停或调整浏览器大小之前,内容不会加载(Content Does Not Load Until Mouse Hover or Resizing Browser)
  • 未捕获的TypeError:auth.get不是函数(Uncaught TypeError: auth.get is not a function)
  • 如何使用变量值创建参数类(How to create a parameter class with variant value)
  • 在std :: deque上并行化std :: replace(Parallelizing std::replace on std::deque)
  • 单元测试返回Connection对象的方法(Unit Test for a method that returns a Connection object)
  • rails:上传图片时ios中的服务器内部错误(rails: server internal error in ios while uploading image)
  • 如何在Android中构建应用程序警报[关闭](How build an application Alarm in Android [closed])
  • 以编程方式连接到Windows Mobile上的蓝牙耳机(Programmatically connect to bluetooth headsets on Windows Mobile)
  • 在两个不同的SharedPreference中编写并获得相同的结果(Writing in two different SharedPreference and getting the same result)
  • CSS修复容器和溢出元素(CSS Fix container and overflow elements)
  • 在'x','y','z'迭代上追加数组(Append array on 'x', 'y', 'z' iteration)
  • 我在哪里可以看到使用c ++源代码的UML方案示例[关闭](Where I can see examples of UML schemes with c++ source [closed])
  • SQL多个连接在与where子句相同的表上(SQL Multiple Joins on same table with where clause)
  • 位字段并集的大小,其成员数多于其大小(Size of bit-field union which has more members than its size)
  • 我安装了熊猫,但它不起作用(I installed pandas but it is not working)
  • Composer - 更改它在env中使用的PHP版本(Composer - Changing the version of PHP it uses in the env)
  • 使用JavaFX和Event获取鼠标位置(Getting a mouse position with JavaFX and Event)
  • 函数调用可以重新排序(Can function calls be reordered)
  • 关于“一对多”关系的NoSQL数据建模(NoSQL Data Modeling about “one to many” relationships)
  • 如何解释SBT错误消息(How to interpret SBT error messages)
  • 调试模式下的Sqlite编译器错误“初始化程序不是常量”(Sqlite compiler errors in Debug mode “initializer is not a constant”)