2013-08-29 55 views
1

在ApplicationHelper中,我有一个名为finTime的方法。从自定义视图中调用助手方法Rails

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模板:错误:未定义方法'finTime'为#< #Class:0x6db8eb0>:0x8321928>“

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

回答

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 

如果这两点都在你的问题只有问题,不在您的代码中,请尝试用inspectmethods代替finTime(),并看看会发生什么。如果仍然存在错误,你就会知道你必须去其他地方看看,如果没有,你会得到一些信息可以帮助你解决问题。祝你好运!

+0

对不起,我更新了finTime函数,它有参数。我认为蛇的情况不是问题,因为这个功能起作用。问题是该函数没有定义(不能调用该帮助函数)。ActionView :: Template:Error:未定义的方法'finTime'为#<#Class:0x6db8eb0>:0x8321928> – ZeroX

+0

啊,对不起,蛇的情况绝对不是问题与它的工作与否,只是想说,这是惯例使用它的方法。将更新回答 – dax

+0

感谢您的帮助。我可以通过使用PagesController.new.finTime现在:)调用finTime – ZeroX

相关问题