その他
    ホーム 技術発信 DoRuby Ruby On Rails コンボボックスなどの動的な動き observe_field

    Ruby On Rails コンボボックスなどの動的な動き observe_field

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    どもrick No.12です。

    今回は、このプルダウンを選んだらこっちのプルダウンの値が変わる!!
    なんてことをしたいときにobserve_fieldを使用します。
    observe_fieldは、railsのRJSテンプレートという機能を使っています。
    RJSテンプレートは、javascriptを書かなくても簡単にかける機能って感じですかね。

    view側(プルダウンを監視してプルダウンを更新する)

    <%= select(“keyword”, “category”, Test.collect{i.title, i.id}) %> //監視されるプルダウン
    <%= observe_field(“keyword_category” //この値を見る(上のソース)
    :update => “keyword_small_category”, //この値の場所を更新する
    :submit => “keyword”,
    :url => {:action => “small_category”} //このaction名のメソッドを呼び出すと同時にsmall_category.html.erbを読み込む、[:action => “aa”, :id => params[:id]]なども可能
    :width => “value” //keyword_categoryのidをvalueで渡す
    ) %>
    <%= select(“keyword”, “small_category”, Test.collect{i.title, i.id}) %> //更新されるプルダウン

    small_category.html.erb

    <%= options_for_select Test.ccollect{i.title, i.id} %>
    //更新後のプルダウンの値

    controller側

    def small_category
    render :layout => false
    end

    view(プルダウンを監視してなにか呼び出す)

    更新されるプルダウンだったところを

    <div id=”small_category”></div>

    とする。
    そうするとsmall_category.js.erbが呼び出される。そこに表示したいものを書けばよい。
    以上。