コンボボックスを簡単に実装したい
Rails2の頃に使っていた「observe_field」が使えなくて悩んでいて調べると
Railsでコンボボックスを連動させるサンプル
というのを見つけた。実装が面倒くさそう。
そんなときは無理矢理実装する
コントローラー
def new @ar = ArticleRental.new @category = params[:category].blank? ? "": params[:category] #機器のカテゴリ選択 temps = Article.find(:all).group_by{|item| item.category} @categorys = Array.new for tem in temps @categorys << [tem[0], tem[0]] end #機器を選択 items = Article.find(:all, :conditions=>[category = ?", @category]) @items = Array.new items.each{ |m| @items << [m.name, m.id] } end def create #重要なところだけ if params[:ar][:items].blank? redirect_to :action=>:new, :category=>params[:category] end end
ビューの中身
<th>貸出機器</th> <td> <%= select_tag(:category, options_for_select(@categorys, :selected=>@category), :include_blank=>true, :onchange => 'this.form.submit()')%> <%= f.select(:items, @items, {},{:multiple => true, :size=>5} )%> </td>
実際にはもうちょっと仕掛けが必要そうだけど、一つのフォームで都道府県>市町村とか1つだけの絞り込みならこんなんで良いんじゃない?