2007年5月26日土曜日

ObserveFieldを使ってビュー表示の切り替え

リストタグやラジオボタンなどフォームの入力値によって表示内容を切り替えたいと思います。
今回はselectタグ(1)の選択時に別のselectタグ(2)の内容を変化させます。

1.Railsに標準で同胞されているprototype.jsをインクルードします。

<%= javascript_include_tag "prototype" %>

2.formタグのid,nameを指定します。
<%= start_form_tag :controller => 'store' ,:action => 'confirm',:id => 'myform' -%>

※コントローラ、アクションはそれぞれご自信の環境に合わせて変更してください。

3.非同期通信用のヘルバーを挿入
<%= observe_field (:order_type_1 ,
{:frequency => 0.5 ,
:update => 'payment_type',
:url => {:action => 'update_payment'},
:with => "order[type]"}) -%>

※frequency = 実行する秒数
 update = 更新するrhtmlの中の指定したエリアです。今回は

としています。

4.observe_fieldを実行した際に返すrhtmlの設置
 touch store/update_payment.rhtml

5.rhtmlに選択肢の取得用ヘルパーの記載

6.コントローラにメソッドを追加
vi store_controller.rb

def update_payment
@order = Order.new(params[:order])
unless params[:order].type.nil?
@consumer_type = params[:order][:type]
else
@consumer_type = nil
end
render :layout => false
end
このメソッドの中で分岐条件を書いてviewを読み出すようにしてください。


SevenAgent,Inc

1 件のコメント:

匿名 さんのコメント...

parameterのブランクチェックは

params[:hogehoge].blank?

でチェックできます。