0

这是我的模型:

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"
      }

// ETC。 });

行动:

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)):

如何处理这个错误?有什么建议吗?谢谢。

4

2 回答 2

4

简单地将符号传递给 Appointment 构造函数是行不通的。

您需要像这样传递变量:

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

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

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

于 2013-09-12T14:28:18.500 回答
3

如果你尝试:

@appointment = Appointment.new(params[:data])
于 2013-09-12T14:17:32.750 回答