我正在尝试创建一个允许用户提交评论的应用程序。如何成功保存在轨道上接收为POST-红宝石的json对象
我用survey.js它会返回响应JSON对象,这里是将请求发送到所需的URL咖啡脚本文件:
$.ajax({
type:'POST',
url: "/surveys/save",
data: survey.data,
success: alert("saved"),
dataType: JSON
在我控制我尝试保存适当的参数:
def create
if validate_user
@submission = Submission.new(submission_params)
if @submission.save
redirect_to '/surveys/saved'
else
redirect_to '/surveys/nosaved'
end
end
end
但是我看到来自服务器的输出:
"Started POST "/surveys/save" for ::1 at 2016-08-01 00:21:47 -0400
Processing by SurveysController#create as */*
Parameters: {"question1"=>"eh", "question2"=>"1", "question3"=>"3", "question4"=>"1", "question5"=>"1", "question6"=>"3", "question7"=>"4", "question8"=>"1", "question9"=>"2", "question10"=>"1"}
Can't verify CSRF token authenticity"
请指教,从我的研究中看来,我需要在我的请求中加上真实性标记,但我不知道如何去做。
谢谢!
****更新**
我确实有CSRF meta标签在我的应用程序布局文件
******更新2 *******
我在Coffee脚本中尝试了以下内容,导致了相同的输出。
$.ajax({
type:'POST',
beforeSend: test = (xhr)-> return xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf token"]').attr('content'))
url: "/surveys/save",
data: survey.data,
success: alert("saved"),
dataType: JSON
});
你可以验证你是否有这样的行:'<%= csrf_meta_tag%>'布局文件中的某处,例如'application.html.erb'? – kasperite