thinreports-railsを使ってみた

去年ThinReportsの事をブログに書いたら開発者の方からコメント頂いてthinreports-railsをご紹介頂いたのでせっかくだから使ってみました。
以前はかなり急いでいて知らないライブラリをたくさん入れるのをためらって使いませんでしたが、また帳票出力機能を追加する事になったので使ってみました。
使ってみて帳票出力部分のコードをコントローラから分離できて、結構簡単に使えるのではじめから使っておけばよかったです。 以下サンプル。

インストール

  • Gemfile
gem 'thinreports-rails'

※gem 'thinreports'は記載しなくて良いらしい

config/routes.rb

resources :countings do
  # /countings/1/download => countings#download
  get :download, on: :member, format: :pdf
end

app/controllers/countings_controller.rb

class CountingsController < ApplicationController
  # GET /countings/1/download
  def download
    @counting = Counting.find(params[:id])

    respond_to do |format|
      format.pdf {
        send_data render_to_string, filename: 'hoge.pdf', type: 'application/pdf', disposition: 'inline'
      }
    end
  end
end

app/views/countings/download.pdf.thinreports

report.events.on :page_create do |e|
  e.page.item(:page).value(e.page.no)
end

report.start_new_page do |page|
  page.item(:total).value(@counting.total)
end

@counting.vouchers.each do |voucher|
  report.list do |list|
    list.add_row store: voucher.store.name, date: voucher.created_at, number: voucher.number, amount: ApplicationController.helpers.number_to_currency(voucher.total) do |row|
      row.item(:amount).style(:color, 'red') if voucher.total < 0
    end
  end
end

app/views/countings/download.tlf

ThinReports Editorで作成した帳票レイアウトを配置しておく。