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

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

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

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

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

関連記事

Railsでdocxをフォーマット指定でダウンロードできるようにする

タイトルだけだと何のことだかわからない railsでdocuments/2とかをGETメソッドで呼び出すとdocumentsコントローラーのshowメソッドを呼び出すようになってるんだけど、docum …

Rails3で帳票印刷を試す~thinreports

  www.thinreports.org/ github.com/thinreports/thinreports-rails3-example 目次1 とりあえずサンプルを試してみた2 ソ …

Rails3.2でdocxを作成

  途中経過 github.com/jawspeak/ruby-docx-templater これを試してみた まずローカル環境にgemをダウンロード [crayon-59c137deed1 …

状況に応じてRailsのフォームの種類を変える

  前提 railsでdocxを生成する動画 docxを生成するアプリは変数を自動で読み込むけど、状況に応じてフォームの種類を変えたい. Railsでは変数に応じてフォームの種類を用意してい …

今度こそRails3.2からdocxを生成する

  前提 Rubyからdocxを生成する 前回、イキオイアマって自分でdocxを生成する簡単なライブラリを作ってしまった.(なんて車輪の再発明 今回はこれをRailsから利用してみる. 目次 …