(@ event.start_date-Time.now)// NoMethodError(未定义的方法` - '代表nil:NilClass):

时间:2013-01-25 16:33:09

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

在此应用程序中创建事件时,系统会检查是否接近3天。如果是,则更改布尔值。

它工作正常,但我不知道我做了什么但是减法操作给了我一个错误。 NoMethodError(未定义的方法` - '代表nil:NilClass):

我确信这是一个简单的错误..但找不到它。任何帮助非常感谢。非常感谢!!

event_controller.rb

  def create
    categories = params[:category_ids] or []
    @event = Event.new(params[:event].merge(:user_id => current_user.id, :category_ids => categories))
    check_date

    respond_to do |format|
      if @event.save
        #Mailer to seek appoval
        format.html { redirect_to @event, notice: 'Event was successfully created.' }
        format.json { render json: @event, status: :created, location: @event }
      else
        format.html { render action: "new" }
        format.json { render json: @event.errors, status: :unprocessable_entity }
      end
    end
  end

private 

  # Set the event to 'reminded'
  def check_date
    if close_date
      @event.reminded = true
    end
  end

  # Checks whether an event is happening in less than 72h
  def close_date
    if ((@event.start_date-Time.now)< 259146.01469397545)
      true
    else 
      false
    end
  end

更新

当事件尝试保存时,显然日期字段为空。这是因为我更改字段以实现dateTimePicker。

他们曾经是

.field
    = f.label t :event_start_date
    %br
    = f.datetime_select :start_date
  .field
    = f.label t :event_finish_date
    %br
    = f.datetime_select :finish_date

现在 字段

    = f.label t :event_start_date
    %br
    = f.text_field :start_date, :class=>"datetime_box", :size=>"17"
  .field
    = f.label t :event_finish_date
    %br
    = f.text_field :finish_date, :class=>"datetime_box", :size=>"17"

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您的@event一定不能设置start_date。

另外,考虑使用72.hours而不是那个巨大的常量(带有奇怪的小数位数......)