ホーム 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が呼び出される。そこに表示したいものを書けばよい。
以上。

記事を共有

最近人気な記事