我有来自以下javascript文件的POST请求:
this.submitQuoteButton = $("<button />")
.text("Download PDF")
.addClass("submitQuoteButton button-success pure-button")
.click(function() {
$.ajax({
type: "POST",
url: "../quotes/create",
data: {
name : "John ",
email: "john@john.com",
json: "data",
uid: "uid",
},
dataType:'text',
success: function(data,status,xhr){
console.log(status);
alert("SUCCESS!");
},
error: function(xhr,status,error){
console.log(status,error);
alert("ERROR!");
}
});
})
这个POST调用我的quotes_controller创建方法,我有这个
def create
@quote = Quote.new(quote_params)
if @quote.save
redirect_to root_url
else
redirect_to blog_path
end
end
private
def quote_params
params.require(:quotes).permit(:uid, :name, :email, :json)
end
目的是获取POST请求中传递的数据,并使用create方法将其保存到我的数据库中。我这样做了吗?我得到了:
param is missing or the value is empty for: quotes
这是否意味着我的数据库设置或创建方法存在问题?
答案 0 :(得分:6)
quote_params
需要您的参数中的quotes
键。所以你的ajax调用数据应如下所示:
data: {
quotes: {
name : "John ",
email: "john@john.com",
json: "data",
uid: "uid",
}
}