Ruby on rails Rails日历插件:无效日期错误

Ruby on rails Rails日历插件:无效日期错误,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我正在我的Ruby on Rails应用程序中创建一个日历,使用RailsCasts中的日历。我正在做他们让我做的一切,一步一步。然而,由于某些原因,我在日历中遇到了跳过几个月的问题。有人能帮我解决这个错误吗 控制器: class CalendarController < ApplicationController def index @statuses = Status.all @date = params[:month] ? Date.parse(params[:

我正在我的Ruby on Rails应用程序中创建一个日历,使用RailsCasts中的日历。我正在做他们让我做的一切,一步一步。然而,由于某些原因,我在日历中遇到了跳过几个月的问题。有人能帮我解决这个错误吗

控制器:

 class CalendarController < ApplicationController
  def index
    @statuses = Status.all
    @date = params[:month] ? Date.parse(params[:month]) : Date.today
  end
end
<%= link_to "<", :month => (@date.beginning_of_month-1).strftime("%Y-%m") %>
    <%=h @date.strftime("%B %Y") %>
    <%= link_to ">", :month => (@date.end_of_month+1).strftime("%Y-%m") %>

我对您的代码(在IRB内部)进行了一些处理,得到了以下结果:

irb(main):002:0> require 'date'
=> true
irb(main):003:0> Date.today
=> #<Date: 2011-06-18 (4911461/2,0,2299161)>
irb(main):004:0> Date.parse('2011-09')
ArgumentError: invalid date
        from C:/apps/ruby/ruby192/lib/ruby/1.9.1/date.rb:1022:in `new_by_frags'
        from C:/apps/ruby/ruby192/lib/ruby/1.9.1/date.rb:1066:in `parse'
        from (irb):4
        from C:/apps/ruby/ruby192/bin/irb:12:in `<main>'
irb(main):005:0> Date.parse('2011-Jan')
=> #<Date: 2011-01-01 (4911125/2,0,2299161)>
irb(main):006:0> Date.today.strftime("%Y-%m")
=> "2011-06"
irb(main):007:0> Date.parse('2011-01-26')
=> #<Date: 2011-01-26 (4911175/2,0,2299161)>
irb(主):002:0>要求“日期”
=>正确
irb(主要):003:0>Date.today
=> #
irb(main):004:0>日期解析('2011-09')
ArgumentError:无效日期
来自C:/apps/ruby/ruby192/lib/ruby/1.9.1/date.rb:1022:in'new\u by\u frags'
来自C:/apps/ruby/ruby192/lib/ruby/1.9.1/date.rb:1066:in'parse'
来自(irb):4
来自C:/apps/ruby/ruby192/bin/irb:12:in`'
irb(主要):005:0>Date.parse('2011年1月')
=> #
irb(主):006:0>日期。今天。标准时间(“%Y-%m”)
=> "2011-06"
irb(main):007:0>Date.parse('2011-01-26')
=> #
因此,我认为date的解析方法不适合您的格式。您应该在视图中使用解析方法可以理解的另一种格式

例如,在视图代码中使用:

 <%= link_to "<", :month => (@date.beginning_of_month-1).strftime("%Y-%m-%d") %>
(@date.start\u of_month-1).strftime(“%Y-%m-%d”)%%>
作为您的格式(以及

 <%= link_to ">", ... %>

检查控制器操作中是否设置了参数['start\u date']
 <%= link_to ">", ... %>