ale*_*lex 3 ruby-on-rails-3 rails-3-upgrade
我正在将我的应用程序从Rails 2.3升级到Rails 3.我读到我需要插入
<%= csrf_meta_tag%>
在我的布局中,我做了.不幸的是,当我使用ajax请求时,我一直在注销.经过一番研究后,我发现一种较旧的方法是添加
$j(document).ajaxSend(function(e, xhr, options) {
var token =$j("meta[name='csrf-token']").attr("content");
xhr.setRequestHeader("X-CSRF-Token", token);
});
Run Code Online (Sandbox Code Playgroud)
在我的application.js文件中.它现在正常工作(似乎我实际上不需要csrf_meta_tag).
这是正常的我不得不在我的application.js中添加这4行代码而不仅仅是csrf_meta_tag,或者我只是遗漏了什么?
首先,您需要csrf_meta_tag.如果您不在布局中使用它,则不会生成csrf-token元,然后您的application.js修复程序将停止工作.
该jquery-ujs宝石(jQuery的轨道)应该照顾这对你.您使用的版本可能存在一些错误.(我确实记得3.0.x中有相关的错误,但无法回想起确切的问题).尝试更新jquery-ujs并重新生成jquery(rails generate jquery:install),删除rails.js以查看是否修复了该问题.
附加说明:从rails 3.1开始,csrf_meta_tag已重命名为csrf_meta_tags,但仍可使用前者.
请参阅github上的jquery-ujs.
| 归档时间: |
|
| 查看次数: |
3879 次 |
| 最近记录: |