2012-03-14 12 views
7

मैं एक prawn वर्ग के अंदर rails 3.2 सहायकों उपयोग करने के लिए कोशिश कर रहा हूँ, लेकिन रेल फेंकता है:रेल/प्रोन: मैं प्रोन क्लास के अंदर रेल सहायकों का उपयोग कैसे करूं?

undefined method `number_with_precision' for #<QuotePdf:0x83d4188> 

झींगा कक्षा

class QuotePdf < Prawn::Document 
    def initialize(quote) 
    super() 

    text "sum: #{number_with_precision(quote.sum)}" 
    end 
end 

नियंत्रक

def show 
    @quote = current_user.company.quotes.where(:id => params[:id]).first 
    head :unauthorized and return unless @quote 

    respond_with @quote, :layout => !params[:_pjax] do |format| 
    format.pdf do 
     send_data QuotePdf.new(@quote).render, filename: "Devis-#{@quote.date_emission.strftime("%d/%m/%Y")}.pdf", 
     type: "application/pdf" 
    end 
    end 
end 

आपकी मदद के लिए धन्यवाद।

उत्तर

11

आपको अपने प्रोन दस्तावेज़ वर्ग में स्पष्ट रूप से ActionView::Helpers::NumberHelper (या कोई अन्य सहायक वर्ग/मॉड्यूल) शामिल करना होगा।

class QuotePdf < Prawn::Document 
    include ActionView::Helpers::NumberHelper # <- 

    def initialize(quote) 
    super() 

    text "sum: #{number_with_precision(quote.sum)}" 
    end 
end 
+0

रेल 3.2.11 में मेरे लिए अच्छी तरह से काम किया। Siekfried नहीं किया था। धन्यवाद! –

+0

नवीनतम रेल संस्करण पर वर्ग (कक्षा की परिभाषा से पहले) के बाहर होना चाहिए !! – mArtinko5MB

5

iafonov समाधान काम नहीं करता है, तो आप सिर्फ उपसर्ग के बिना NumberHelper शामिल करने के लिए हो सकता है।

6

प्रोन उप-वर्ग प्रारंभकर्ता को बस view_context पास करें।

def initialize(quote, view_context) 
    super() 
    @view = view_context 
end 
नियंत्रक में

, बदलने के लिए:

QuotePdf.new(@quote, view_context) 

तो झींगा उप-वर्ग में, इस काम करेगा:

@view.number_with_precision(quote.sum) 
+0

मुझे यह विधि बहुत बेहतर पसंद है, क्योंकि यह @view और इसकी विधियों को अलग रखती है। इस तरह आपके पास कभी भी एक्शन व्यू से कुछ नहीं होगा गलती से prwn :: दस्तावेज़ में बंदरगाह कुछ। – sockmonk

संबंधित मुद्दे