忍者ブログ
ブログツール、2007/11/06作成
[21] [20] [19] [18] [17] [16] [15] [14] [13] [12] [11
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ユーザビリティの向上のため、obseve_fieldを使ってみる。

ActionHelperの一つなんだけど、
ターゲットの出すイベントで非同期のアクションを呼び出してくれる。

使い方は簡単。ビューに埋め込む。
<div id="<%= observe_update_id %>">
<%= check_box_tag observe_target_id, value %>
<%= observe_field observe_target_id, 
                  {:on=>'change',
                   :update=>observe_update_id, 
                   :with=>"'value_param_name='+(value)", 
                   :url=>{:controller=>'controller_name', 
                          :action=>'action_name', 
                          :addtion_param=>addition_param_vaule}}%>
 
</div> 
とこんな感じ。
observe_fieldの第一引数に監視するフィールドのIDを入れておき、
:updateオプションに更新したい要素のIDを入れておく。
サンプルの場合、チェックボックスのチェックを入れたり、外したりしたときにアクションが発生して、
自分自身が含まれる要素を書き換えることになる。

自分以外の所に指定してやれば、結果が返ってくる。
自分以外の所に指定して、そのIDも動的に生成してやれば、再帰的に呼び出すことも可能。

呼び出し先はurl_forの形式なので、固定的なパラメータはここに埋め込んでやればいい。

問題なのは、監視対象のフィールドの値をどうやって送るか。
:withオプションを指定しないときは、
value = request.raw_post || request.query_string
で受け取るらしい。

なんか生っぽくて気持ちが悪いのっで、出来ればparams[:name] = valueで受け取りたい。

で、:withオプションに
"'value_param_name='+(value)"
と指定してやる。ダブルクオートとシングルクオートが入り交じっているのは、
:withオプションの中身をJavascriptが評価するから。

ちなみにテキストフィールドなんかで定期的に評価したいときは、
:onオプションをやめて、
:frequencyオプションに秒数を入れてやればいい。

:onオプションには、change以外にもイベントを指定できる。

いやあ、便利便利。
PR
この記事にコメントする
name
title
color
mail
URL
comment
pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
secret (チェックを入れると管理人だけに表示できます)
この記事へのトラックバック
この記事にトラックバックする:
ついめ~じ
ブログ内検索
フリーエリア
サニーカメラ
Powered by Ninja Blog    template by Temp* factory    icon by MiniaureType

忍者ブログ [PR]