コントローラとアクション名取得
こんな感じ
controller.controller_name controller.action_name
フィールドを監視してselectの値を動的に変える(observe_field)
こんにちわ〜
今回はobserve_fieldを使用してselectフィールドの値を変化させる方法について書いてゆきますかね。
まずはviewでこんな感じにobserve_fieldを使う
view <%= select_tag :select_data,options_for_select(@category_options) %> <%= observe_field(:select_data, #監視するフィールド :frequency => 0.25, :update => :change_field, #更新するフィールド :with => "select_value", #params[:select_value]に値が入る :url => { :action => :live_search }) %> #呼び出すアクション <%= select_tag :change_field,options_for_select(@subcategory_options) %> #更新対象のフィールド
次にlive_searchアクションでparams[:select_value]から値を取得。
適当に加工してlive_searchビューに渡す!ここでは@subcategory_optionsを渡すことにしましたよっと。
live_search.rhtml
<%= options_for_select(@subcategory_options) %>
これでいけます。
ちなみにform_forの場合
<% form_for :article,@article,:url =>{:action => 'articles_create'},:html => {:multipart => true } do |form| %> カテゴリ<%= form.select :select_data,@options %> <%= observe_field("article_select_data", :update => "article_change_field", :with => "option_value", :url => { :action => :live_search }) %> サブカテゴリ<%= form.select :change_field,@suboptions %>
こんな風なフィールド名の指定をしないとだめ。
mongrelでRailsやってみます
webrickより軽いmongrelとかいうサーバがあるとの情報を得た。
mongrelがなんで軽いかというと
「動作速度に関わる余分なモジュールや機能が省かれて設計されており、単体での動作速度が非常に早い。」
からだそう。
というわけでやってみます。
まずインストール
gem install mongrel
次に、fastthreadも一緒にインストールする必要があるらしいのでする。これはarrayの高速化とか、バグパッチとかが入っているらしい、らしい。(いらないとかいう情報もあった)
gem install fastthread nmake 'nmake' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
あれ
nmakeがないだって?
gem update --system
これでfastthreadいけましたー
インストール完了です。
>>mongrel_rails start ** Starting Mongrel listening at 0.0.0.0:3000 ** Starting Rails with development environment... ・ ・ ・
おお、いけた
というわけで早速サイトを悦乱してみると。。。
おおーー早い
早くなりました。
というわけでmongrelを使ってみましたが、確かに早くなります。ビュン
いろいろ省かれてる分問題もあるらしいです。 => えとブログ(2006-01-30)
あとそのままでmongrel使うと単一プロセスしか走らないらしいので
実際にWebサービスとして使うならApacheとかと連携するのがいいみたい。
参考サイト
http://it.kndb.jp/entry/show/id/87
ありがとうございます。
each_with_index 〜インデックス番号付きでeach〜
each_with_index{|a,index| 処理}
こんな感じ。それだけ
式 ||= と &&
tnさんに教えてもらったことのメモ。
value ||= a #valueがnilならaを代入
とても便利。tnさんありがとうございます。
あと
current_client_user ||= (session[:client_user] && ClientUser.find_by_id(session[:client_user])) || :false
これの&&の意味がよくわからなかったので調べたところ
・まず左辺を評価して、結果が真であった場合には右辺も評価する。
・論理積、論理和はtrue、falseをかえすのではなく、オペランドのいずれかを返す。
ということらしい。
真偽値ではなくて値を返すんですね。
勉強になりました。
多重代入、多値と配列展開
多重代入
a,b,c = 1,2,3 p a;p b;p c #=> 1 # 2 # 3
多値と配列展開
array = [1,2,3] a,b,c = *array p a;p b;p c #=> 1 # 2 # 3
a,*b = 1,2,3,4,5 p b #=> [2,3,4,5]