現在、Rails のバージョンをアップグレード中ですが、date_select タグの 1 つで奇妙なエラーが発生しました。
これが犯人です:
<%= date_select :consultant_assignment, :start_date, :order => [:day, :month, :year],
:start_year => 5.years.ago.year, :end_year => 5.years.from_now.year, :use_short_month => true %>
これにより、次のようなエラーがスローされます。
NoMethodError
プロファイル#show
46 行目が発生した app/views/people/_upcoming_assignments.html.erb の表示:
予期していなかったのに nil オブジェクトがあります! Array のインスタンスを期待していたかもしれません。nil.size の評価中にエラーが発生しました
抽出されたソース (46 行目あたり):
43: <label for="consultant_assignment_start_date"><%= _('Start') %>:</label>
44: <% debugger %>
45:
46: <%= date_select :consultant_assignment, :start_date, :order => [:day, :month, :year], :start_year => 5.years.ago.year, :end_year => 5.years.from_now.year, :use_short_month => true %>
47:
48:
49:
この問題を追跡しようとしましたが、:order 配列に :month オプションを入れるとエラーが発生するようです。したがって、 :order => [:day, :year] を実行すると、ページが完全に読み込まれます。
私は正確な問題を探しましたが、フロントエンドの設計者であるため、これをどのように進めるかわかりません。これは私のコードによるエラーですか? それとも廃止された方法ですか?
は次のapplication trace
とおりです。
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:746:in `_unmemoized_month_names'
/opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/memoizable.rb:72:in `month_names'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:781:in `month_name'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:708:in `select_month'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:705:in `upto'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:705:in `select_month'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:898:in `send'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:898:in `build_selects_from_types'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:896:in `each'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:896:in `build_selects_from_types'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:646:in `select_date'
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_view/helpers/date_helper.rb:920:in `to_date_select_tag_without_error_wrapping'
私はメモされていない月の名前についてグーグルで検索しましたが、nada を見つけました。
さて、私はちょうどくそったれを機能させるために :order 句全体を取り出してみました。今回はエラーにはなりませんが、タグは表示されません! irb でチェックしてみましたが、どうやら私の date_select タグは select タグを返さず、隠しタグの束だけを返しているようです!
デフォルトのレールの例でこれを試しました:
date_select("post", "written_on")
irb はこれを返します:
=> "\n\n\n"
ご覧のとおり、select タグはどこにもありません。datetime_select を試したところ、select タグが表示されました。では、2.3.8 の date_select はどうなっているのでしょう?