トップ «前の日記(2004-11-06) 最新 次の日記(2004-11-21)» 編集

3 日坊主日記


2004-11-07 [長年日記]

_ [Rails] date_select

日付範囲<br />
<%= date_select("stock", "stay_start") %> から<br />
<% now = Time.now %>
<%= date_select("stock", "stay_end", :include_blank => true, :start_year => now.year-5, :end_year => now.year+5) %> まで<br />

date_select で :include_blank => true にしたとき :start_year, :end_year を省略するとうまくいかない。

action_view/helpers/date_helper.rb:
191:      def to_date_select_tag(options = {})
...
195:        date     = options[:include_blank] ? (value || 0) : (value || Date.today)

の value ってどこからきてるんだろう?

date_select からの params を Date に変換するのは

active_record/base.rb:
693:      def attributes=(attributes)

でやってるんだね。

今回のような使い方のときは ActiveRecord には渡さない (渡せない… method_name が column に対応しない) のでだめだな。

def params_to_date(method_name)
  Date.new(*(1..3).map{|i| @params["stock"]["#{method_name}(#{i}i)"].to_i })
rescue
  nil
end

こうかな…ださっ。

_ [Rails] actionpack-controller_name-untaint.patch

* @request.parameters["controller"] は設定されていないような。

* mod_ruby 対応のための untaint。お察しください。

[]