簡體   English   中英

Rails DateTime-NoMethodError(nil:NilClass的未定義方法“ []”)

[英]Rails DateTime - NoMethodError (undefined method `[]' for nil:NilClass)

這是我的模型:

class User < ActiveRecord::Base
has_many :appointments
has_many :doctors, :through => :appointments
end

class Doctor < ActiveRecord::Base
has_many :appointments
has_many :users, :through => :appointments
end

class Appointment < ActiveRecord::Base
belongs_to :doctor
belongs_to :user
end

調用控制器動作的代碼:

$.ajax({
  type: "POST",
  url: "/create",
  data: {
    appointment_date: date,
    doctor_id: "1",
    user_id: "1"
  }

//等});

行動:

def create
    @appointment = Appointment.new(:appointment_date => params[:data][:appointment_date], 
        :hairdresser_id => params[:data][:doctor_id], :user_id => params[:data][:user_id])
    if @appointment.save
        flash[:success] = "Welcome!"
        redirect_to @user
    else
        alert("failure!")
    end
end

我得到了這個錯誤:

NoMethodError (undefined method `[]' for nil:NilClass)

我正在使用FullCalendar插件,它以這種格式獲取日期:

Fri Sep 13 2013 12:00:50 GMT-0400 (EDT)

我將該日期保存到datetime字段中的數據庫中。

有任何想法嗎?

進行ajax調用時,可以訪問諸如

params[:appointment_date]
params[:doctor_id]
params[:user_id]

並不是

params[:data][:appointment_date]
params[:data][:doctor_id]
params[:data][:user_id]

由於沒有什么叫做params [:data]的東西,所以給你一個nil類錯誤。

如果它是約會控制器的create action,那么它將是

$.ajax({
  type: "POST",
  url: "/appointments",
  data: {
    appointment_date: date,
    doctor_id: "1",
    user_id: "1"
  }

在創建動作中

def create
    @appointment = Appointment.new({:appointment_date => params['appointment_date'], 
        :hairdresser_id => params['doctor_id'], :user_id => params['user_id]'})
    if @appointment.save
        #YOUR CODE
    else
        #YOUR CODE
    end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM