2012年7月8日日曜日

ruby帳票

rubyで作る帳票で結構いいのがありました。
thinreportです。テンプレートを作るソフトもついているので、かなり使いやすいです。
rubyを使っている方は一度試してみたらどうでしょうか?http://www.thinreports.org/
それをrailsで使いやすくしたのがthinreports-rails。これもrailsの考え方の延長上で上手く作られているので、使いやすいです。https://github.com/takeshinoda/thinreports-rails

使い方

テンプレート作成ソフトでreport.tlfを作成して、/view/books/report.tlfとして保存 locals/routes.rb
resources :books do
    collection do
        get 'report', :format => :pdf
    end
end
コントローラー
class BooksController < ApplicationController
  def report
    @books = Book.all
    respond_to do |format|
        format.pdf 
    end
  end
end
app/views/books/report.pdf.thinreports (この形式のファイル名)
report.set_layout # ! <= Required. default use: books/report.tlf
report.start_new_page
report.page.values printed_at: Time.now
@books.each do |book|
  report.page.list(:list).add_row do |row|
    row.item(:col1).value book.name
  end
end

ファイルをクライアントで保存させる場合はコントローラを以下のように変更
class BooksController < ApplicationController
  def index
    @books = Book.all
    respond_to do |format|
      format.pdf { 
        send_data render_to_string, filename: 'foo.pdf', type: 'application/pdf', disposition: 'attachment'
      }
    end
  end
end

0 件のコメント:

コメントを投稿