Ruby on Rails

改良中...心に優しいエラー表示を!

現状で、もしすべての行で検証エラーが発生したとすると、こんな感じになる...。 ずぶん派手に教えてくれる。何処がどんなエラーなのか明快と言えば明快なのだが...この表示、何度も見てると、なんだか気持ちを逆撫でされているようで、いつのまにか「言われ…

改良中...yen_fieldが欲しい!

業務システムの入力には金額がつきものだ。でも現状では、その度に以下のように書く必要がある。 <%= text_field 'slip', 'total_yen', :value=>number_with_delimiter(@slip.total_yen), :autocomplete=>'off', :style=>"text-align:right" %> 上記のような…

改良中...金額は金額らしく右寄せ、カンマ区切りで

現状では「10000」と入力しても、フォームの左端からそのまま表示される状態。やはり金額であれば、右寄せにして「10,000」と表示したい。 number_with_delimiterを使えば、簡単にカンマ区切りの文字列に変換することができる。 :autocomplete=>'off'オプシ…

改良中...フォームのエラー表示も含めた検証(validate)に変更

前回からの改良作業の続き。気付いたところから、より使い易く、よりメンテし易くなるようにどんどん変更していく。今回は、伝票と明細の合計金額の検証のところ。現状は検証エラーが発生しても、エラーメッセージしか表示しない。改良後は伝票の合計金額と…

改良中...複数のモデルを同時に保存する

前回思い浮かんだ疑問や問題に、できるところから自分なりに対応してみた。 入力されている明細のみ保存する Journalモデルに入力チェックのメソッドinput?を追加してみた。 ついでに、インデックス値の先頭に「j」を付加して、idと重複する可能性を無くして…

has_manyな関連で、1アクションで複数のモデルを同時に保存するには?

前回までのhas_oneな関連に限定した、複数のモデルを同時に保存するコード まず、前回のコードは、あまりにも手抜きだったので、もう少しscaffoldに習った形式に書き直してみた。この後has_manyな関連に対応させることを目指して、以下のようにしてみた。 既…

1アクションで複数のモデルを同時に保存するには?

今更ながら基本的なことかもしれないが(自分では今も悩み続けている)、業務システムで入力する部分を作っていると、しばしば2つ以上のモデルを同時に保存したい状況に陥る。例えば、伝票を入力する場合であれば、伝票は複数の明細行を持っているので、共通…

Mac OSX 10.5 LeopardでRails環境を整える〜RadRails 0.7.2とSubclipse

RadRails 0.7.2に戻して一つ悩んでしまったのが、Subversionとの連携がうまく機能しなかったこと。「プロジェクトの共用」を実行しても最後は必ずエラーになってしまい、リポジトリに登録することができない...。調べてみると、これはRadRailsのSubclipseプ…

Mac OSX 10.5 LeopardでRails環境を整える〜試行錯誤編

自分のMacBook、OSX 10.5環境で、aptanaが思い通りに動かない。最近10.5.1にアップデートした後、とうとう開発環境が起動しなくなってしまった...。(原因が10.5.1アップデートかどうかは不明)そもそも、10.5.1アップデート以前から環境設定で設定した通り…

Mac OSX 10.5 LeopardでRails環境を整える〜日本語版Tracとソースコードの色付け

英語は苦手なので、可能な限り日本語環境でソフトウェアを利用したい。前回インストールしたTracも英語環境なので、日本語化の情報を探してみたら、インタアクトさんがこちらで公開してくれてました。素晴らしいです!早速インストール。 ところが、やはりOS…

Mac OSX 10.5 LeopardでRails環境を整える〜Tracのインストール

前回に引き続き、今度はTracというプロジェクト管理ツールを導入してみた。(以前から憧れていたのです。)個人で開発している時でも、開発の手順や必要な機能をリストアップしておくと、今何をするべきかわかりやすくて、無駄な遠回りをしなくても済むのだ…

Mac OSX 10.5 LeopardのRails環境を整える。

先週発売されたMac OSX 10.5には、RubyもRailsも最初からインストールされている。ターミナルを見てみると、そのままの設定で日本語に対応しているところも嬉しい。余計なことを考えなければ、ターミナルを起動して、いきなりrails softwareとコマンド入力す…

プラグイン作成中に覚えたこと 補足

メソッドを追加するメソッド シンプルに考えれば、以下のようにメソッド定義の中にメソッド定義を書いても良いと気付いた。(define_methodは必要ない?) class Test def self.make_foo def foo 'foo' end end end test = Test.new Test.make_foo test.foo …

プラグイン作成中に覚えたこと

クラスメソッドの定義方法いろいろ 参考:Rubyリファレンスマニュアル - クラス/メソッドの定義 参考:極めよRuby道 第9回 モジュールとクラスの使い方 class Test def Test.foo 'クラスメソッドfoo' end end # または... class Test def self.foo 'クラス…

プラグインにまとめてみる。(text_field_with_collection_auto_comolete)

前回実装したtext_field_with_collection_auto_comoleteとcollection_auto_complete_forは、今後よく使いそうなのでプラグインにまとめてみる。以下は、プラグインを作成してみた手順。(自分の環境と使い方の範囲では正常に動作しています。) ついでに今回…

text_field_with_collection_auto_completeが欲しい!

銀行支店を検索する始めの一歩は、以下のようなコードだった。 <%# ビュー %> <%= text_field_with_auto_comolete :payee_account, :bank_id %> # コントローラー auto_complete_for :payee_account, :bank_id text_field_with_auto_completeの最もシンプル…

かな、カナ、カナ、どれでも検索可能なプルダウンリスト

だいぶ良い感じになってきたが、もう一つストレスを感じる所がある。それは、「かな、カナ、カナ」の違い。「ひらがな or カタカナ(全角) or カタカナ(半角)」普通に検索すると、文字の種類が違っていると異なるキーワードと見なされて一致しない。 それから、…

コードでもカナでも漢字でも検索可能なプルダウンリスト

銀行と支店が連動して、だいぶ使い易くなってきたが、まだまだストレスを感じる。今、検索のキーになっているのはkanaフィールドのみ。ユーザーの中には、よく使う銀行コードは覚えてしまっているからコードで指定したいんだとか、正しい読み方は分からない…

検索可能なプルダウンリストで、二つのフォームを連動させる。

auto_completeの使い方が分かってきたところで、最初の銀行支店をスマートに選択する課題に戻ってみる。 まず、銀行と支店を検索するので、text_fieldを二つ用意した。 そうすると、二つのtext_fieldはお互いに連携している必要がある。以下のような連携を求…

検索可能なプルダウンリストで3箇所以上のフォームを更新する。

前々回のid属性に欲しい値を設定する方法では、選択リストをクリックした時に更新するフォームが3箇所以上になってしまうと、やってやれないことはないが、設定するのが面倒な状況になる。実際にやってみる。以下のようなコードにしてみた。 空のspanタグのi…

検索可能なプルダウンリストのオプション設定の調査

前回、オプション指定の順序を間違えて、勝手に出来ないと思い込んでいたので、ここでもう一度オプション指定を見直してみることに。以下は現状で自分が理解できたauto_completeに関連するのオプションの指定方法の一部。 text_field_with_auto_completeのオ…

検索可能なプルダウンリストを作る。

selectタグはマウスだけで簡単に選択できて便利なんだけど、選択項目の件数が増えた時にちょっと困ったことになる。例えば、全銀データで利用する銀行コードは1500件、支店コードは35000件の中から選択する状況の場合、selectタグだと長〜〜〜い選択リストを…

sortable_elementのオプション

久々の更新になってしまった...。ちょっと、別件で集中してやってみたいことがあったのだ。そして、気付いてみたら、前回から1ヶ月も経過していた。1ヶ月前を思い出しながら、気を取り直して、続けます。だいぶ忘れているので、まずはsortable_elementのオプ…

ツリー構造をマウスで並べ替える。

会社には組織がつきもので、組織はOSのファイルシステムのような階層構造を持っている。そして、会社組織というものは、しょっちゅう変更される運命だ。この変更に迅速、柔軟に対応するために、OSのファイルシステムのように、データベース上のツリー構造を…

マウスで握って並べ替える。

リストの順番を自由に並べ替えたい。こんな時、Railsにはヘルパメソッドsortable_elementがある。このメソッドを1行追加するだけで、マウス操作でドラッグして並べ替えが可能になる。但しいくつか注意することがある。それを知らないために、思うように動か…

楽観的ロックの使い方

webアプリケーションでは、二人以上のユーザーが同じデータを編集中という状況が発生する。その場合、特に対策をとらなければ、最後に送信ボタンを押したユーザーのデータで更新されるはず。しかし、これではお互いの意思を確認できないまま、結果として、先…

ベイジアンフィルターで日本語を分類する。

ベイジアンフィルターで日本語を取り扱う時に問題になってくるのが、文章を品詞レベルに分解する処理。英語の場合は、文章はスペースで区切られた品詞の集合で構成されるため、余分なことをせずに簡単に処理できる。例えば、'How do I set up an AirPort wir…

Rubyでベイジアンフィルター

ベイジアンフィルターという仕組みを知ったのは、何年か前に迷惑メールの多さに困り始めた頃だった。OSX付属のMailにも迷惑メールフィルター機能は存在するが、これがあまり賢くない。(いくら学習させても、すり抜けてくる迷惑メールが日に何通かあり、また…

CSVサーバー0.7

前回までの状態をCSVサーバー0.7として公開しました。 更新履歴 検索フィルター内でリンクをクリックした時も「処理中...」の表示をするようにしました。 フィルター中は、テーブルの外枠を強調表示するようにしました。フィルター状態かどうか、一目で判断…

RailRoadで楽しむ。

RailRoadを使うと、プロジェクトのモデル、コントローラーの内容や関係を視覚的に表現した図にしてくれる。具体的には以下のような結果が得られる。(CSVサーバープロジェクトの場合) モデルの図 コントローラーの図 インストール RailRoad自体のインストー…