« ソイレント・グリーン | トップページ | みんなのうた三昧 »

学習RoR(11) radio_button_tag

 リストページで並べ順を切り替えられるようにしてみた。はじめは単純にテキストリンクでやってみたが、ラジオボタンにしてみるのもよいかなと変えてみる(こういう効果があったのかもしれない)。

list.rhtml(部分だけどほぼこんな感じ)
 <div>
  <%= start_form_tag :action => 'list' %>
  <%= radio_button_tag :sort, "code", "checked" %><%=h _('Code') %>
  <%= radio_button_tag :sort, "name" %><%=h _('Name') %>
  <%= submit_tag _('Sort') %>
  <%= end_form_tag %>
 </div>

<div class="booklist">
<table>

 <%= render :partial => 'listitem', :collection => @items %>

</table>
</div>


 でもってコントローラで、

 def list
  case params[:sort]
  when 'name'
   @page, @items = paginate :items, :order => 'name_read ASC', :per_page => 10
  else
   @page, @items = paginate :items, :order => 'code ASC', :per_page => 10
  end
 end

 こんな感じにしたらとりあえず切り替えはできるのだけれど、list.rhtml 全体を書き換えてしまうのでラジオボタンのチェックが残らない。つねにデフォルト状態。これをなんとか残せるようにしたいのだけれど、どうもうまい手が見えない。

 observe_field とかで render すればいいのか? とも思ったのだけれどどうもうまくいかない。

 テキストリンクだってリンクなしにするわけではないので同じなので、デフォルトチェックをなくしておくというのでよいのだけれど。なんかうまい方法がないものだろうか。と悩む日々。

追記:12/28
 arton さんのコメントでさっそく修正。DRY な方向での検討はするとしてひとまずはこれで。ただ、これだけだと始めにページにアクセスしたときにチェックされないままなので、コントローラのアクションのデフォルト処理部分( else 以降)に

 params[:sort] = "code"

 を追加してみた。

(12)につづく

Rails のお薦め本

|
|

« ソイレント・グリーン | トップページ | みんなのうた三昧 »

コメント

 
とすると常にcodeにチェックが入ります(第3パラメータが真なので)。
これを受け取った値との比較にすれば良いではないでしょうか。


をもっとDRY(第2パラメータが第3パラメータにも出てくるのがちょっといやですね)に書くような方向で。

投稿: arton | 2006.12.27 02:00

書きなおしです。
 <%= radio_button_tag :sort, "code", "checked" %>
とすると常にcodeにチェックが入ります(第3パラメータが真なので)。
これを受け取った値との比較にすれば良いではないでしょうか。
<%= radio_button_tag :sort, "code", params[:sort] == "code" %>
<%= radio_button_tag :sort, "code", params[:sort] == "name" %>
をもっとDRY(第2パラメータが第3パラメータにも出てくるのがちょっといやですね)に書くような方向で。

投稿: arton | 2006.12.27 02:03

ありがとうございます。確かにこれで期待に近くなりました。 DRY な方向を模索してみます。
#先のコメントは見えなくなっていたのですね。通知メールでは見えていたので?になっていました。
#しかし一体いつ眠られているのですか?(笑)。

投稿: ムムリク | 2006.12.27 11:43

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/28835/13206717

この記事へのトラックバック一覧です: 学習RoR(11) radio_button_tag:

« ソイレント・グリーン | トップページ | みんなのうた三昧 »