Lau*_*ura 8 ruby pdf ruby-on-rails prawn
我正在尝试rails 3.2在prawn类中使用帮助器,但是rails会抛出:
undefined method `number_with_precision' for #<QuotePdf:0x83d4188>
Run Code Online (Sandbox Code Playgroud)
虾类
class QuotePdf < Prawn::Document
def initialize(quote)
super()
text "sum: #{number_with_precision(quote.sum)}"
end
end
Run Code Online (Sandbox Code Playgroud)
调节器
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
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
iaf*_*nov 13
您必须ActionView::Helpers::NumberHelper在您的prawn文档类中明确包含(或任何其他帮助程序类/模块).
class QuotePdf < Prawn::Document
include ActionView::Helpers::NumberHelper # <-
def initialize(quote)
super()
text "sum: #{number_with_precision(quote.sum)}"
end
end
Run Code Online (Sandbox Code Playgroud)
只需传递view_context给Prawn子类初始化程序.
def initialize(quote, view_context)
super()
@view = view_context
end
Run Code Online (Sandbox Code Playgroud)
在控制器中,更改为:
QuotePdf.new(@quote, view_context)
Run Code Online (Sandbox Code Playgroud)
然后在Prawn子类中,这将起作用:
@view.number_with_precision(quote.sum)
Run Code Online (Sandbox Code Playgroud)