0

我正在使用 Time 在我正在处理的事件控制器中保存开始和结束日期。但是,我的应用程序忽略了在浏览器和我的 Rspec 测试中的测试和开发环境中提交时间信息。似乎正在创造一个时间,但在我所有的测试中,围绕这个时间的结果始终是 2000 年 1 月 1 日凌晨 12:00。

任何人都可以帮助确定问题吗?

以下测试由于不同的原因而失败(请不要担心这一点),但它显示了问题的严重程度。测试中提交的 end_time 不是 2000 年 1 月 1 日凌晨 12:00。

失败:

1) 如果提供了结束日期/时间(可选字段),EventsController GET 在登录时显示 多日事件的显示显示结束日期

失败/错误:response.should have_selector("span", :class => "end_time_date",预期以下输出包含 2000 年 1 月 1 日星期六标签:

...
[div class="start"] 
    Starts:
    Saturday, 01 January 2000 at 12:00 AM
[/div]
[div class="end"]
    Ends
    [span class="end_time_time"]
        12:00 AM
    [/span]
[/div]

上面失败的测试:

  describe "display for a multi-day event" do

      before(:each) do
        # Turn example event into one that spans multiple days.
        @event.end_time.advance(:days => 2)
      end  

      it "shows an end date" do
         get :show, :id => @event
         @human_friendly_end_date = @event.end_time.strftime("%A, %d %B %Y")            
         response.should have_selector("span", :class => "end_time_date", 
                        :content => @human_friendly_end_date)
      end

      it "shows an end time" do
         get :show, :id => @event
         @human_friendly_end_time = @event.end_time.strftime("%I:%M %p")
         response.should have_selector("span", :class => "end_time_time", 
                     :content => @human_friendly_end_time)
      end
  end

您可以在其中看到 start_time 和 end_time 属性的模型非常易于访问,并且(在此时为 start_date 的情况下)需要:

class Event < ActiveRecord::Base

  belongs_to :user

    attr_accessible :name, :description, :start_time, :end_time, 
                        :max_attendees, :min_attendees, :event_type_id  

  validates :name, :presence => true, :length => { :minimum => 4, :maximum => 140 }

  validates :description, :length => { :minimum => 4, :maximum => 1000 }

  validates :start_time, :presence => true

  #validates :end_time, :presence => true

    validates :user_id, :presence => true

end

FactoryGirl 事件的生成似乎无关紧要,因为浏览器中也发生了同样的问题,但我也会将其包括在此处以防万一。你可以看到(从这里注释掉的位)我已经尝试硬编码数字来创建日期/时间;这并没有解决任何问题。

Factory.define :event do |event|
  event.name                    "Foo bar"
    event.description             "Yada yada"
    event.association             :user
  week_num = (rand(10) +1)
  day_num = (1+rand(30))
  hour_num = (1+rand(12))
  hours_duration_num = (1+rand(4))
  future_date = week_num.weeks.from_now
  #event.start_time             "2012,8,5,6"
  #event.end_time               "2012,8,5,7"
  event.start_time              "#{future_date.year},#{future_date.month},#{day_num},#{hour_num}"
  event.end_time                "#{future_date.year},#{future_date.month},#{day_num},#{hour_num+hours_duration_num}"
end

我的迁移:

类 CreateEvents < ActiveRecord::Migration

def self.up

create_table :events do |t|

  #foreign key first  

  t.references :event_type

  t.integer :user_id
  t.string :name, :null => false
  t.text :description, :null => false
  t.time :start_time, :null => false
  t.time "end_time"
  t.timestamps
end

呐呐!发生了什么事?!

4

1 回答 1

0

可能是由于时间字段而不是日期字段。

我会尝试改变:

t.time :start_time, :null => false
t.time "end_time"

t.datetime :start_time, :null => false
t.datetime :end_time
于 2012-05-10T22:59:53.217 回答