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

執筆者:

関連記事

Rails3.2でajaxなフォルダツリーを導入する~dynatree-rails

  jQuery UIのプラグインdynatreeをRailsで使ってみた github.com/glebtv/dynatree-rails wwwendt.de/tech/dynatree …

Rubyでデータクリーニング~mechanize & active_support

  オライリー・ジャパンから「d3をはじめよう」という本が発売されたので読んだ 棒グラフ、折れ線グラフ、インタラクション(マウスオーバーで丸が大きくなるとかラベル表示とか、横のリストからグラ …

Rails4.1に対応したRefinery CMS 3.0を試してみた

By: Alexis Madrigal – CC BY 2.0 目次1 Refinery CMS2 Gemfile3 generate4 configファイル5 起動6 管理画面7 トラブ …

docxをhtmlに変換する~ydocx

  github.com/zdavatz/ydocx プレビューの見た目を少しよくしたくて良さげなパーサーを試してみた 準備

RailsでECサイト構築6 固定ページを作る~spree

  ECサイトを作成するときには日本の法律にしたがって色々と表示しなければならない 表示しなければならないことについては次のページが詳しかった 本サイトについて 実際のECサイトをみれば実例 …