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で帳票印刷
-,

執筆者:

関連記事

backbone-relationalをJasmineでテストしてみた

no image

MongoidでMapReduceに挑戦中

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

no image

Mongoidのandとorで悩み中

and

or

  orの方はハッシュで[crayon-5d …

Rails4.0でもajaxなデータテーブルを使う~ajax-datatables

Railsでajaxなテーブルを使う~datatables Rails4でのJSONテンプレート~jbuilder+rabl+ruby 目次1 index.json.jbuilder2 tasks.j …

RailsでこんにちはBackbone.Marionette

By: palindrome6996 – CC BY 2.0 自分の中でmarionette熱がだんだんと高まりつつあり、特徴的なItemView、CollectionView、Compo …