4

Railsモデルがあり、方法の1つで、エビを使用してpdfを生成しています。

class Report < ActiveRecord::Base

  def pdf_output
    Prawn::Document.new do
      text "Start date: #{start_date.strftime('%e %b %Y').squish}"
    end
  end

end

そのテキスト メソッドで、レポート モデルの start_date 属性を出力しようとしています。代わりに、次のエラーが表示されます

NoMethodError in ReportsController#show

undefined method `start_date' for #<Prawn::Document:0x007fdafbce6930>

したがって、私の start_date メソッドは、Report オブジェクトではなく Document オブジェクトを参照しています。このブロック内からレポート オブジェクトの変数とメソッドにアクセスするにはどうすればよいですか?

4

1 に答える 1

5

通常のJavaScriptトリックは機能するはずです:

def pdf_output
  report = self
  Prawn::Document.new do
    text "Start date: #{report.start_date.strftime('%e %b %Y').squish}"
  end
end

必要なものへの参照を取得するだけで、selfエビがブロック内で何をしているのかを心配する必要がなくなりselfます。

于 2012-10-15T05:52:09.890 に答える