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でdocxを作成

目次1 途中経過2 次にrubyのスクリプトから同じことをしてみる3 Railsから試してみる4 うまくいきました 途中経過 github.com/jawspeak/ruby-docx-templat

RailsでReactコンポーネントをつかう

By: justine warrington – CC BY 2.0 目次1 React on rails2 インストール3 react on railsで生成されるファイル4 mater …

Rails4でフォーム要素を動的に追加したり削除したり〜nested_form

目次1 参考2 前提の環境3 Gemfile4 View5 Controller6 できた7 パーシャル化8 フォームを追加する場所を指定する9 一対一の場合10 そのほか11 番外編: 1つのモデル …

no image

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

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

no image

Railsで動画ファイルを管理する~CarrierWave Flowplayer

  参考 Ruby on Rails 3.2でファイルアップロード〜CarrierWave & RMagick Rails3で動画配信を試用~flowplayer 環境 Ubuntu …