Rails 3:表单提交两次

时间:2011-01-06 21:30:03

标签: ruby-on-rails forms formtastic

我正在开发一个Rails应用程序,其中包含使用formtastic生成的表单。 我正在开发&本地测试 - 就是在localhost:3000 w / Ruby-1.9.2,Rails-3.0.1,jQuery和AJAX。

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

  
      
  1. 在2011-01-07 02:31:47 开始发布“/ commerce / 6 / edit_balance”for 127.0.0.1 +0530处理方式   BusinessesController#edit_balance作为JS参数:{“utf8”=>“✓”,   “authenticity_token”=> “中zcWH08sV8kPbAYy7JQX64Cu2e1i / kEB1AB4x5a08CO8 =”

  2.   
  3. 在2011-01-07 02:31:48 开始发布“/ commerce / 6 / edit_balance”for 127.0.0.1 +0530处理方式   BusinessesController#edit_balance作为JS参数:{“utf8”=>“✓”,   “authenticity_token”=> “中zcWH08sV8kPbAYy7JQX64Cu2e1i / kEB1AB4x5a08CO8 =”

  4.   

所以我想知道我是否正在制作一个基本的编程错误。如果是的话,那么请您提出一些我可以尝试的解决方案。

3 个答案:

答案 0 :(得分:8)

我在部署到Heroku之后就遇到了同样的问题...我预先编译了我的资产,突然间我得到了双重AJAX提交。我想我最终在公共/资产中找到了重复的javascript文件。

要解决此问题,我刚刚删除了整个公共/资产目录。

答案 1 :(得分:1)

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

$('form').submit(function(){
  $(this).find(input[type='submit']).attr("disabled", "true");
  ... // submit form via AJAX
  return false;
});

答案 2 :(得分:0)

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

Apnediving:下面是1.创建表单(表单部分)的代码位2.定义包含表单的对话框(对话框部分)和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' 

Dialog Partial

#编辑币-对话框

- @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 
}) ;