在ApplicationHelper中,我有一个名为finTime的方法。
def finTime(time)
end
在delayed_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#&lt; #Class:0x6db8eb0&gt;:0x8321928&gt;”
所以我想问一下如何在这种情况下从exportPdf.html.erb调用finTime方法。我尝试使用include和helper,但它不起作用。 谢谢!
答案 0 :(得分: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
,看看会发生什么。如果还有错误,你就会知道你必须在其他地方寻找,如果没有,你会得到一些可能有助于你解决问题的信息。祝你好运!