2013-08-29 92 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

相關問題