我有以下 jQuery js 在我的 View 中插入表单(在 application.js 中):
$("#add_new_quote").click(function() {
$(".quote:first").prepend("<form action=\"" + window.location + "\" accept-charset=\"UTF-8\" method=\"post\"> " +
"Quote: <input id=\"quote_text\" name =\"quote_text\" type=\"text\" maxlength='145' size='100'>" +
"<input name=\"submit\" type=\"submit\" value=\"Add\">" +
"</form>" +
"<br>");
});
当我点击提交时,我设置的所有 session 变量都会以某种方式丢失,我不知道为什么以及如何丢失。例如,我在 session 变量(session[:user_id])中设置用户的id以供引用,但提交后它是空白的。我尝试在 View 中使用 form_tag 添加表单,它工作正常,所以我想我错过了一些重要的东西......
我正在使用 Rails 3 和 jQuery 1.5。
最佳答案
如果添加此内容,它将设置 CSRF token ...
// ahead of the form string
var token = $('meta[name="csrf-token"]').attr('content');
// then in the form string
"<input name='authenticity_token' type='hidden' value='" + token + "'/>"
如果您无法使用 AJAX,这应该可以解决问题,AJAX 将为您做到这一点。
关于jquery - 使用 jQuery 创建表单,正常提交后 session 变量消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5213749/