我最近切换到Google关闭一个新项目.我无法在ajax调用中将真实性令牌添加到头文件中.我该怎么办?
我的Ajax片段(使用goog.net.XhrIo类):
var initialHTMLContent = superField[i].getCleanContents(); var data = goog.Uri.QueryData.createFromMap(new goog.structs.Map({ body: initialHTMLContent })); goog.net.XhrIo.send('/blogs/create',function(e) { var xhr = /** @type {goog.net.XhrIo} */ (e.target); alert(xhr.getResponseXml()); },'POST',data.toString(),{ 'Accept' : 'text/xml' });
在后台使用导轨.
更新:
日志:
Processing BlogsController#create (for 127.0.0.1 at 2010-06-29 20:18:46) [PUT] Parameters: {"authenticity_token"=>""} ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken): Rendered rescues/_trace (272.4ms) Rendered rescues/_request_and_response (1.2ms) Rendering rescues/layout (unprocessable_entity)
解决方法
您可以在rails视图(.html.erb文件)中设置一个像这样的js变量:
window._token = '<%= form_authenticity_token %>';
然后在你的电话中附加它:
goog.net.XhrIo.send('/blogs/create?authenticity_token=' + window._token,{ 'Accept' : 'text/xml' });