Ruby on rails (@event.start_date-Time.now)//NoMethodError(未定义的方法“-';用于nil:NilClass):

Ruby on rails (@event.start_date-Time.now)//NoMethodError(未定义的方法“-';用于nil:NilClass):,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,在该应用程序中,当创建事件时,系统将检查是否接近3天。如果是,则会更改布尔值 它工作得很好,但我不知道我做了什么,但减法运算给了我一个错误。 NoMethodError(nil:NilClass的未定义方法“-”): 我确信这是一个简单的错误。。但是找不到它。非常感谢您的帮助。非常感谢 事件控制器.rb def create categories = params[:category_ids] or [] @event = Event.new(params[:event].m

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

它工作得很好,但我不知道我做了什么,但减法运算给了我一个错误。 NoMethodError(nil:NilClass的未定义方法“-”):

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

事件控制器.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
现在呢 场


知道如何解决吗?

您的
@事件
不得设置开始日期


也可以考虑使用<代码> 72小时/COD>而不是那个巨大的常数(具有小数位数的奇数…)< /P>您的<代码> @事件< /代码>不能有<代码> StisturDATE < /Cord>SET。此外,考虑使用<代码> 72小时>代码>代替那个巨大的常数(具有小数位数的奇怪……)你可能是对的。刚意识到我在某个时候改变了一些东西,因为日期不再存储。让我想想……将我的评论移到了答案中。@SergioNekora DateTimePicker中的日期格式是什么(因此在

参数[:event][:start\u Date]
中)?你想要什么样的格式?我不确定我是否理解你的要求。但是日期格式应该是“datetime”,因为你是对的,我已经用这个问题更新了我的问题
.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"