Hatena::ブログ(Diary)

guccyonikki このページをアンテナに追加 RSSフィード

2007-11-29

ActionViewHelperのselect関数で・・・

view でセレクトボックス描画に

ActionViewHelperのselect関数を利用した。


使い方は

select(object, method, choices, options = {}, html_options = {})

objectにはインスタンス変数名、

methodにそのインスタンスのgetter名

choicesはoptionタグの要素を配列で。


こんな感じで使う

select "obj", "name", [ ["名前1","1"], ["名前2","2"] ], :include_blank=>true

(include_blankは空の選択肢の有無)


ここで一つ注意。

指定するオブジェクトはsendプロパティを持ってはいけない。

(厳密にはsendという名前のアクセサを作らない)


Objectクラスのメソッドにsendというのがあるんだけど、

どうやらselect関数ではオブジェクトプロパティ取得に

sendメソッドを呼び出しているみたい。


そのせいでsendを上書きしてしまうと予期せぬ動きをする。

これで少しハマった。。

Objectクラスのリファレンスを見ても、

ライブラリではsendを使うときは__send__(sendのalias)を

使えって書いてあるじゃん!

最新のrailsでは直ってるんだろうか。。。