8

我正在开发一个 Rails 应用程序,该应用程序具有使用 formtastic 生成的表单。我正在本地开发和测试 - 也就是说 - 在 localhost:3000 w/Ruby-1.9.2、Rails-3.0.1、jQuery 和 AJAX 上。

下面是我看到的问题的示例屏幕输出。我的表单在 1 秒内被提交两次。我不明白为什么会这样。我看到这个问题与所有请求 - 包括 GET。

  1. 在 2011-01-07 02:31:47 +0530 由 BusinessesController#edit_balance 作为 JS 参数处理127.0.0.1 开始 POST "/businesses/6/edit_balance" :{"utf8"=>"✓", "authenticity_token"= >"zcWH08sV8kPbAYy7JQX64Cu2e1i/kEB1AB4x5a08CO8="

  2. 2011-01-07 02:31:48 +0530 BusinessesController#edit_balance 作为 JS 参数处理127.0.0.1 开始 POST "/businesses/6/edit_balance" :{"utf8"=>"✓", "authenticity_token"= >"zcWH08sV8kPbAYy7JQX64Cu2e1i/kEB1AB4x5a08CO8="

所以我想知道我是否犯了一个基本的编程错误。如果是,那么您能否建议一些我可以尝试的解决方案。

4

3 回答 3

9

我在部署到 Heroku 后也遇到了同样的问题……我预编译了我的资产,突然之间我收到了双 AJAX 提交。我想我以某种方式在公共/资产中得到了重复的 javascript 文件。

为了解决这个问题,我刚刚删除了我的整个 public/assets 目录。

于 2012-01-31T03:01:47.910 回答
1

如果您使用 Javascript 提交表单,请尝试将提交按钮设置为在提交表单时禁用。使用 jQuery,它会是这样的(未经测试):

$('form').submit(function(){
  $(this).find(input[type='submit']).attr("disabled", "true");
  ... // submit form via AJAX
  return false;
});
于 2011-01-06T21:43:02.517 回答
0

谢谢PolarBlau ..让我试试你的建议..

Apnediving:以下是 1. 创建表单 (form partial) 2. 定义包含表单的对话框 (dialog partial) 和 3. 将动作附加到表单的 JS 代码。

表格部分(credits_form)

- f.inputs :name => 'Edit Credits' do 
  = f.input :numeric_input_1, :label => 'Amount', :as => :select, :collection => [1000,2000,3000] 
  = f.input :boolean_input_1, :label => 'Add Credits'
  = f.commit_button :label => 'Submit' 

对话部分

#edit-credits-对话框

- @user_input = UserInput.new

 = semantic_form_for @user_input, :remote => true do |f|     
 = render :partial => 'businesses/credit_form', :locals => {:f => f}

JS代码

$.getJSON('/businesses/' + id + '/load_credits', function(data) { 
    var form = $('#edit-credits-dialog form') ; 

    form.attr('action', '/businesses/' + id + '/edit_balance') ; <-- seems to be happening twice
    $('#edit-credits-dialog').dialog('open') ; <--- happens once 
}) ; 
于 2011-01-07T05:43:44.323 回答