コンボボックスを簡単に実装したい

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つだけの絞り込みならこんなんで良いんじゃない?