我们目前正在升级我们的 Rails 版本,我在我的一个 date_select 标签中遇到了一些奇怪的错误。
这是罪魁祸首:
<%= 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 标签没有返回任何选择标签,而只是一堆隐藏标签!
我用默认的 rails 示例尝试了这个:
date_select("post", "written_on")
irb 返回:
=> "\n\n\n"
如您所见,任何地方都没有选择标签。我尝试了 datetime_select ,我在那里看到了一个选择标签。那么 2.3.8 的 date_select 是怎么回事呢?