2011-09-23 74 views
0

我有一個表格如下:Rails的形式多次提交,但不知道爲什麼

<%= form_for(:session, :url => sessions_path, :remote => true, :html => {:id => 'login_form'}) do |f| %> 
    <div class="formRow"> 
     <%= f.label :email  %><br> 
     <%= f.text_field :email, :value => (@email if @email) %> 
    </div> 
    <div class="formRow"> 
     <%= f.label :password  %><br> 
     <%= f.password_field :password %> 
    </div> 
    <div class="formRow small"> 
     <%= link_to "I forgot my password",'#' %>  
    </div> 
    <div class="formRow"> 
      <%= f.submit signin_button_text, :class => "button-big left" %> 
    </div> 
<% end %> 

它去到該控制器:

def create 
     @email = params[:session][:email] 
     user = User.authenticate(params[:session][:email],params[:session][:password]) 
     respond_to do |format| 
     if user.nil? 
      @title = "Sign in" 
      flash.now[:error] = "Invalid email/password combination" 
      format.js {render :action => :new } 
     else 
      sign_in user 
      format.js {render :action => :create } 
     end 
     end 
    end 

這裏是new.js文件:

$('#login_form').replaceWith("<%=escape_javascript(render 'login_form')%>"); 
if($('.flash-block').length ==0) { 
$('#login_form').before("<div class='flash-block error'><span><%=escape_javascript(flash[:error])%></span></div>"); 
          } 

由於某種原因,如果表單提交時有錯誤,它會循環四次。

我不明白爲什麼。

在代碼中是否有東西導致它循環?

回答

0

我在使用Fancybox並沒有在iframe中打開它。所以我結束了兩次加載jquery庫,因此當我提交表單時,我有多個提交。

一旦我在iframe中打開Fancybox,它只會提交一次。

0

我假設你正在使用jQuery。這通常發生在電話不完整或存在某種錯誤並且您沒有刷新頁面時。嘗試這樣的事情:

<script type="text/javascript"> 
$('#login_form').submit(function() { 
     $(this).unbind('submit').submit(); 
     }); 
</script> 
相關問題