2011-09-23 3 views
0

내가 양식을 왜 모르는 :레일 형태는 여러 번 제출하지만, 다음과 같이

<%= 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>"); 
          } 

양식이 오류와 함께 제출 된 경우 어떤 이유로 4 번 반복됩니다.

이유를 모르겠다.

코드에서 루프가 발생하는 무언가가 있습니까?

답변

0

나는 Fancybox를 사용 중이며 iframe에서 열지 않았습니다. 그래서 jquery 라이브러리를 두 번로드하고 양식을 제출했을 때 여러 번의 제출이있었습니다.

iframe에 Fancybox를 연 후에는 한 번만 제출했습니다.

0

jquery를 사용하고 있다고 가정합니다. 이것은 일반적으로 불완전한 호출이 있거나 일종의 오류가 있고 페이지를 새로 고치지 않은 경우에 발생합니다. 다음과 같이 시도하십시오 :

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