Rails日历插件:无效的日期错误

时间:2011-06-18 11:19:12

标签: ruby-on-rails ruby ruby-on-rails-3

我正在使用我在RailsCasts中获得的this plugin在Ruby on Rails应用程序中创建日历。我正在做他们告诉我的一切,一步一步。但是,出于某种原因,我在日历中遇到问题要跳过几个月。有人可以帮我解决这个错误吗?

控制器:

 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") %>

错误:

invalid date
 app/controllers/calendar_controller.rb:4:in `index'

1 个答案:

答案 0 :(得分:0)

我已经使用了你的代码(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)>

因此,我认为日期的解析方法不适用于您的格式。您应该在视图中使用另一种格式,这可以通过解析方法理解。

例如在视图代码中使用:

 <%= link_to "<", :month => (@date.beginning_of_month-1).strftime("%Y-%m-%d") %>

作为您的格式(以及

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