ArgumentError(错误的参数个数(3个为0..1)):

时间:2013-09-12 14:15:29

标签: ruby-on-rails ruby ajax database

这是我的模特:

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, :doctor_id, :user_id)
if @appointment.save
    flash[:success] = "Welcome!"
    redirect_to @user
else
    alert("failure!")
end

我收到了这个错误:

ArgumentError (wrong number of arguments (3 for 0..1)):

如何处理此错误?有什么建议?感谢。

2 个答案:

答案 0 :(得分:4)

简单地将符号传递给约会构造函数不起作用。

你需要传递这样的变量:

Appointment.new(:appointment_date => params[:appointment_date], ...)

由于params散列已包含所有这些值,因此您可以像zwippie已经显示的那样直接传递这些值。

只是未来的一个标题:如果您的params哈希包含您不想传递给构造函数的值,请使用Appointment.new(params.except(:unwanted_key))

答案 1 :(得分:3)

如果你尝试怎么办?

@appointment = Appointment.new(params[:data])