这是我的模特:
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)):
如何处理此错误?有什么建议?感谢。
答案 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])