Rails 3: Jquery代码在进行简单的AJAX调用时中断,认为这是一个简单的错误
Rails 3: Jquery code breaks when making simple AJAX call, think is a simple mistake
希望在设计注册控制器中更新User模型。
在我看来,我有
<%= form_for(@user, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put, :id => 'share-form' }, :remote => true) do |f| %>
<%= f.check_box :facebook_share %>
<%= f.label :facebook_share, :class => 'submit-share' %>
<% end %>
所以表单有id="share-form",我有一个指定的url和方法。
当我的Jquery是表单提交正常,但数据库没有更新任何数据:
$(document).ready(function(){
$('.submit-share').click(function() {
$('#share-form').submit();
});
});
控制台读取:
Started POST "/users" for 127.0.0.1 at 2014-07-25 13:34:21 +0700
Processing by RegistrationsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"GrQWqDseCwhlrpNhv8i3hvlL4iwae0U/pP+wSu4iabk=", "user"=>{"facebook_share"=>"0"}}
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = 31 LIMIT 1
CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = 31 LIMIT 1
SQL (0.8ms) SELECT 1 FROM "users" WHERE (LOWER("users"."email") = LOWER('drew@drew.io')) AND ("users".id <> 31) LIMIT 1
SQL (0.1ms) SELECT COUNT(*) FROM "authentications" WHERE ("authentications".user_id = 31)
CACHE (0.0ms) SELECT COUNT(*) FROM "authentications" WHERE ("authentications".user_id = 31)
CACHE (0.0ms) SELECT COUNT(*) FROM "authentications" WHERE ("authentications".user_id = 31)
SQL (0.1ms) SELECT 1 FROM "users" WHERE ("users"."username" = 'facebookname') AND ("users".id <> 31) LIMIT 1
Slug Load (0.7ms) SELECT "slugs".* FROM "slugs" WHERE ("slugs".sluggable_id = 31 AND "slugs".sluggable_type = 'User') ORDER BY id DESC LIMIT 1
CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = 31 LIMIT 1
Redirected to http://localhost:3000/
Completed 302 Found in 361ms
当我添加这个ajax调用来更新数据时,提交不起作用,什么也没有发生。我哪里做错了?控制台什么也没说
$(document).ready(function(){
$('.submit-share').click(function() {
$('#share-form').submit(function(){
$.ajax({
method: this.method,
url: this.action,
data: $('#share-form').serialize()
});
});
});
});
我很困惑,我想这一定是一个简单的错误,非常感谢。
可以尝试一下:
Rails防止随机模型属性从表单发送,并有一个列表,将允许通过params
变量。在Rails 3中,这是通过模型中的attr_accessible
设置的。在Rails 4中,它通过控制器中的strong_params gem进行设置,如下所示。如果您没有将facebook_share
设置为白名单,它将被静默剥离。
还是……
:remote => true
是一个rails的东西,它会照顾你的ajax,只要你包括ujs脚本。您不需要使用Jquery来发送数据,只需处理返回的内容即可。更多信息请点击这里。如果你启用了这个功能,并且在上面做了一些jQuery,可能会有一些冲突。
两种方法:
为了深入了解通过AJAX实际返回的内容,我建议安装RubyMine并启用调试器,以便您可以在控制器中的断点上暂停并查看发生了什么。可以让你从这类事情中解脱出来:)
相关文章:
- Moment/Jquery-一个简单时间线的愚蠢问题
- 问题用moment JS制作一个简单的时间表
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- 测试一个简单的javascript按钮
- 用Jquery map和moment js制作一个简单的时间线
- 简单的垂直上一个和下一个按钮代码点击上下移动jQuery
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- 调试一个简单的jQuery函数;想知道是否与其他代码冲突
- 是否有一个javascript库来解析简单的查询
- 一个简单的粘性头jQuery脚本的问题
- 简单的Javascript方式,在输入字段的每5位数字后添加一个空格
- Sencha Touch使一个简单的按钮工作
- 正在寻找一个非常简单的例子UpdateListItems与Sharepoint2007的SPservices
- html表单,它有文本和表,现在我想在一个简单的文本文件中保存和检索数据,如何实现它
- 如何在Javascript中定义一个简单的自动重启倒计时
- 如何使一个简单的HTML文件成为wordpress中可用的页面
- 如何用D3添加一个简单的圆弧
- angularjs做一个简单的倒计时
- 每次使用 Javascript 加载页面时增加一个数字(变量)的简单方法
- 创建一个简单的处理 p5.js 库