Railsで使えるGem RubyOnRailsで帳票印刷

Railsでデータベーススキーマの変更と関連するモデルのフォーム

投稿日:

 

gemを公開しました!詳細は記事の最後に!

 

新規投稿するフォームのラベルが変数を使っていて見苦しいので自分で好きなラベルを付けられるようにした

いまのスキーマはこんな感じなので、keysテーブルにlabelカラムを追加する

railsではうまくmigrationファイルの命名規約に沿って作るとその内容に従って作ってくれる

ついでにlabelカラムにインデックスをつけておく.あとでlabelを使って検索するので.

こちらは自動でうまくできなかったので自分でmigrationファイルを書く

 

 

次にlabelは次のように最初は自動登録にしたい

  • テンプレートを登録時に自動で設定する
  • 前に同じ名前の変数を使ったことがあれば、その変数のラベルを使う
  • なければ@@を取り除いた英数字をそのまま使う

ラベルを何回もつけるのはめんどうだからね

モデルに次のように書く

set_keysは変数を自動で認識するメソッドなんだけど、新規作成の場合だけkeyを作るようにしている(だから実はテンプレートの変数の数が変わると色々バグが出るんだけど).それは置いておいて、新規作成の場合にはラベルを追加するようにした.

*あと初めて知ったんだけど、findなら1個のデータだけど、whereで探した場合にはfirstをつけないといけないぽい.arrayぽいものが返ってくる.

次にkeyを編集するフォームを作るんだけど、keyのデータは1個1個独立しているから、templateに関連するkeyのデータをまとめて更新するフォームが必要になる.

こういう場合は、関連するモデルのためのフォームを使うのが便利.

関連性の記述

たんにhas_manyって書くだけじゃなくて、accepts_attributes_forを書くのがみそ

そして、Templateモデルからkeysのattributesにアクセスできるようにする

フォームにはfields_forを使う

すいません.tableタグ使うのが楽なんです.

あとはroutes.rbが必要.今回はkeys_controllerを作ってしまったんで、そっちを使うことにした.ホントはtemplates_controllerに書くんだろうけど.

これでtemplate_keys_edit_pathで編集画面にアクセスできる

 

gemもgithubに公開してみました.
変数を置き換えるという発想自体がserenityやdocx_templaterのものだし機能も劣るんだけど、自分の環境ではどちらも日本語がうまく通らなかった.
ので、日本語でdocxを使いたいほかの誰かの役に立つかもしれないと思ったので.

よかったら感想を送ってください.

github.com/seventhsense/simple_docx_generator

このサンプルアプリもそのうち公開したいと思います.

-Railsで使えるGem, RubyOnRailsで帳票印刷
-,

執筆者:

関連記事

no image

MongoidでMapReduceに挑戦中

MongoDBの薄い本の素材をMongoidでやろうとしたけど途中経過 MapReduceをやることの利点は、並列処理ができるということとSQLより柔軟な処理なできるということらしい(MongoDBに …

RedcarpetでTOC表示

By: epSos .de – CC BY 2.0 目次1 Redcarpet2 Redcarpetの使い方3 TOCを表示する4 できた5 Bootstrapのaffixとscrolls …

Rails3.2でGoogle Calendarライクなカレンダーを使う〜fullcalendar-rails

目次1  fullcalendar-rails2 Hello fullcalendar3 オプション  fullcalendar-rails 2種類あるけど上の方を使った github.com/bok

Rails3で帳票印刷を試す~thinreports

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

RailsでECサイト構築5 プロモーションを試す~spree

  spreeをインストールするとspree-promoというエクステンションが含まれている これを使うといろいろな販売企画をすることができる 管理画面から適当に作成してみる 今回は特定の商 …