RubyOnRailsで帳票印刷

Rails4でOpenDocumentText(.odt)を作成~serenity

投稿日:

Rails4でOpenDocumentText(.odt)を作成~serenity(未完)

Rails3.2でOpenDocumentText(.odt)を作成~serenity

theooさんのフォークを使えば日本語も通りました!

github.com/theoo/serenity

Gemfile

テンプレートファイルを作る

SerenityのREADMEドキュメントを参考にodtファイルを作成する

screenshot

*テンプレートはこちらのものを使用させてもらいました。

templates.openoffice.org/ja/template/qing-qiu-shu-tenpureto

Model

モデルなどで、Serenity::Generatorをインクルードして、テンプレート中の@変数を定義して、render_odtでOK

Controller

コントローラーなどでsend_fileしてやれば

できた!

こんなデータから

screenshot

こんなodtファイルを作れるよ!

 

screenshot

カンマの挿入で地味にハマってる。。。

カンマの挿入に対応

ハマったパターン

1000とかは1,000にできるけど、なぜか10000が1,000になってしまうのでだめ

number_to_currencyをつかう

number_to_currencyはModelからは使えないので無理に

テンプレート内のイテレータ下の数字(order.product.price)とかは、代入の段階でうまくnumber_to_currencyできないので、別メソッドを作って対応

テンプレートの方でpriceではなくprice_to_currencyを呼ぶように変更

できた

screenshot

サンプルをGitHubに公開

github.com/seventhsense/claim_system

 

-RubyOnRailsで帳票印刷
-

執筆者:

  • yakoko

    はじめまして。Rails初心者ですが、請求書作成の記事を拝見させていただきました。

    素晴らしいと思いまして、サンプルを動作させてみましたが、ファイル名を入力してダウンロードしようとしますと、下記の様なエラー画面が出てしまいました。

    「NameError in DocumentsController#create」
    「undefined local variable or method `charges’ for #<Document:0x007f98012ab908>」
    ●開発環境

    Mac   MountainLion

    ruby  2.0.0p247

    Rails 4.0.2

    勝手を言いまして申し訳ございませんが、何かお心当たりなどありましたらアドバイスをいただけたらと思います。宜しくお願い致します。

    • seventh

      ためしていただいてありがとうございます。

      ざっくり作ったのでエラー処理がほぼしてないのです。
      請求書には、商品登録と顧客登録が必須なのにチェックしてないためです。
      お手数ですが、一度データベースをリセットして
      rake db:reset
      先に商品と顧客を登録してから、請求書を作成してみてもらえますか。

      また、気づいたら、odtのテンプレートが登録されてませんでした。
      githubの方にアップし直しましたので
      git pull
      または
      git pull -f
      してみてください

  • yakoko

    ご連絡ありがとうございました。

    アドバイスいただきました内容でダウンロードまで出来ました。

    お忙しいところご対応いただきまして本当にありがとうございました。

    今後とも宜しくお願い致します。

関連記事

Rails4でdocxを読み書き〜gem docx

By: Jesús Corrius – CC BY 2.0 github.com/chrahunt/docx rubyでもいいんだけど、rubygemでのバージョンが最新でなかったのでRa …

docx生成アプリのサンプルを公開~simple_docx_generater

自作gemを使ったRailsアプリの作成例を公開しました!   サインインの情報はつぎのとおりです テンプレートの登録・編集権限のあるマネージャー manager1@example.com

no image

Rubyからdocxを生成する

    前提 Rubyでdocxをいろいろ分析してみた 変数の仕様~正規表現 いろいろなパターンで試してみた 例えば、こんな文 [crayon-58b5ab43b131303594 …

no image

Rubyでxmlの要素の追加など~nokogiri

目次1 はじめに2 文字列をパースしてxmlとして読み込んでそのままxmlとして出力する3 nodeの追加4 nodesetの作成と追加5 DocumentFragmentの作成と追加 はじめに 参考 …

Rubyでdocxをいろいろ分析してみた

  目次1 解凍~minizip2 ファイルを開く~File.open3 全ファイルを解凍せずにzip内の必要なファイルだけを開く~zipruby4 置換~gsub5 xmlの操作~noko …