1

在 ApplicationHelper 中,我有一个名为 finTime 的方法。

def finTime(time)
end

在 delay_job 我有 render_to_string 功能

class ExportJob < Struct.new(:time1,:time2, :survey_id)
   def perform
       ac = ActionController::Base.new()
   html = ac.render_to_string(:template => "pages/exportPdf.html.erb",:layout =>    "layouts/exportPdf",:formats => :html
   end
end

在 exportPdf.html.erb 我调用函数 finTime

<%= finTime(f.created_at) %>

我收到错误消息:“ActionView::Template:Error: undefined method 'finTime' for #<#Class:0x6db8eb0>: 0x8321928>”

所以我想问一下在这种情况下如何从 exportPdf.html.erb 调用 finTime 方法。我尝试使用 include 和 helper,但它不起作用。谢谢!

4

1 回答 1

0

这里没有太多信息可以继续,但一种可能性可能是在您的定义中没有参数 - 它只是finTime

但是在通话中,您给出了一个论点f.created_at-也许是导致错误的原因,也许不是。什么是完整的错误?

相关,方法名称的一般做法是蛇案例,所以finTime应该是fin_time.

编辑:例如,如果没有看到更多代码,仍然很困难

<%= finTime(f.created_at) %>

这就是你的代码中的内容吗? finTime()是一种方法,因此必须在模型上调用它-model.finTime(time)

此行还缺少一个结束括号:

html = ac.render_to_string(:template => "pages/exportPdf.html.erb",:layout =>    "layouts/exportPdf",:formats => :html

如果这两件事都只是您的问题中的问题,而不是您的代码中的问题,请尝试用您的部分替换finTime()inspect替换methods,看看会发生什么。如果仍然有错误,您将知道您必须寻找其他地方,如果没有,您将获得一些可能帮助您解决问题的信息。祝你好运!

于 2013-08-29T21:34:03.747 回答