2014-08-20 2 views
0

나는 장치를 사용합니다. /devise/registrations/edit.html.erb 파일에서 몇 가지 변경을했습니다. 다른 두 가지 형식을 추가했습니다. 모든 형태는 .error_notification에 다음과 같은 오류를 보여한 페이지에 세 개의 양식이 하나만 제출되면 오류 경고가 표시됩니다.

<%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put, class: 'form-horizontal' }) do |f| %> 
    <%= f.error_notification %> 
    ... 
    <% end %> 

    <%= simple_form_for(@user, :url => emailnotifs_path, html: {class: 'form-horizontal' }) do |f1| %> 
    <%= f1.error_notification %> 
    ... 
    <% end %> 

    <%= simple_form_for(@user, :url => updatebilling_path, html: {class: 'form-horizontal' }) do |f2| %> 
     <%= f2.error_notification %> 
     ... 
    <% end %> 

내가 세 가지 형태 중 하나를 제출하면 에러가 발생합니다 : 요약 양식 (전체 파일)이 같다 Please review the problems below:

왜 이런 일이 일어나고 논리적인지 궁금합니다. 물론 나는 이것이 일어나기를 원하지 않는다. 각 양식은 독립적이어야합니다. 다른 정보가 필요하면 알려주십시오.

답변

1

마지막 두 양식의 경우 최소한 동일한 사용자 인스턴스 인 @user를 사용하여 양식을 작성하십시오. f1과 f2가 만들어지면 둘 다 사용자로부터 오는 동일한 오류 알림을 표시합니다. 당신이 다른 조치를 사용하는 것처럼

, 당신이 당신의 컨트롤러에 여러 사용자를 만들 수 있습니다

@user=User.find(params[id]) 
@user_email=User.find(params[id]) 
@user_error_notification=User.find(params[id]) 

당신은 당신이 당신의 업데이트 방법 전에 호출 전용 컨트롤러 방법이 넣을 수 있습니다, 어디 업데이트됩니다 올바른 사용자. 이렇게하면 오류는 한 사용자 인스턴스 만 채우고 다른 사용자 인스턴스는 오류를 표시하지 않습니다.

편집 : 이것은 궁극적으로 첫 번째 양식이 어떻게 작동 하는지를 기억하지 못합니다. @user를 인스턴스화해야하는지 또는 개발자가 수행 한 작업을 재정의하는 것으로 끝나는 지 확인해야합니다.

1

이것은 오류가 @user 개체 자체에 저장되고 제출 된 특정 양식과 관련이 없기 때문에 논리적이고 예상되는 동작입니다.

오류가 개체에 저장되므로 오류를 제출 된 양식 옆에만 표시하려면 각 개체에 대해 별도의 개체가 필요합니다.

관련 문제