2009-10-07 9 views
1

Lightbox Gone Wild을 사용하여 양식이있는 모달 대화 상자를 표시합니다. 나는 바닐라 뉴 뷰를 사용하고있다. 이것은 사용자가 유효한 양식 데이터를 입력하지 않을 때까지 챔피언처럼 작동합니다. 잘못된 데이터로 인해 컨트롤러는 오류 메시지와 함께 사용자를 New 뷰로 직접 안내합니다. 분명히 사용자가 오류가있는 일반 New View로 이동하는 이유를 이해하고 있지만 오류를 모달로 반환하는 것을 선호합니다.레일 모달 폼 유효성 검사

분명하지만 비현실적인 옵션은 사용자 지정 클라이언트 측 유효성 검사를 작성하는 것입니다. 또 다른 방법은 모델 유효성 검사를 기반으로 클라이언트 측 유효성 검사 논리를 생성하는 것입니다. 이를 위해 validation_reflection을 사용하는 두 개의 유아용 플러그인을 발견했습니다. 문자 그대로 validatious-on-rails은 주 오래 된 반면 client_side_validation은 버려진 것으로 보입니다. 마지막으로 form_remote_tag를 사용하면 AJAX 포스트 백을 수행 할 때 유망한 것으로 보이며 오류가 발생하면 새로 고침을 수행하지 않는 것처럼 보입니다.

요약하면 모달 대화 상자에서 사용자에게 표시되는 양식에 대한 사용자 입력의 유효성을 검사하는 가장 일반적인 방법과 오류가있는 대화 상자로 오류를 반환하는 방법을 찾고 있습니다.

코드뿐만 아니라 모달

<% link_to 'New Project...', new_project_path, :class => 'lbOn' %> 

새보기

<% form_for(@project) do |f| %> 
    <%= f.error_messages %> 

    <p> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </p> 
    <p> 
    <%= f.label :description %><br /> 
    <%= f.text_field :description %> 
    </p> 
    <p> 
    <%= f.submit 'Create' %><br /> 
    <a href="#" class="lbAction" rel="deactivate">Cancel</a> 
    </p> 
<% end %> 

답변

2

(새로운 것으로 리다이렉트하는 대신) Modal에서 미리 설정된 div를 업데이트하는 RJS 템플릿을 반환 할 수 있다고 생각합니다.

0

기존 방법은 자바 스크립트와 클라이언트 측 유효성 검사를 수행하는 것, 그리고 서버 측 유효성 검사를 엽니 다. 귀하의 경우를 들어, 서버 측 유효성 검사 자바 스크립트 유효성 검사를 위해 AJAX 확실히

를 사용하여 수행해야합니다, 당신은 시도 할 수 있습니다 :

http://docs.jquery.com/Plugins/Validation

서버 측 유효성 검사를 들어, 당신이 시도 할 수 있습니다 :

http://guides.rubyonrails.org/activerecord_validations_callbacks.html (검증)

http://railscasts.com/episodes/43-ajax-with-rjs (아약스)

3

나는 validatious-on-rails 뒤에있는 녀석입니다. 이 경우 클라이언트 측과 AJAX가 모두 필요한 경우가 많습니다. 이전에는 Rails 유효성 검사 옵션이 많은 곳에서 DRY 방식으로 클라이언트 측 유효성 검사를 해결하려고 시도했지만 가능하면 레일스 옵션을 존중하는 클라이언트 측 유효성 검사와 마찬가지로이를 해결하려고합니다. 몇 가지 문제가 있습니다 : if/: except와 몇 가지 다른 이유가 있습니다. 대부분의 IRL 경우에는 가능하지 않습니다. 이러한 경우와 u가 데이터베이스를 쿼리해야하는 경우 (예 : 사용자 ID의 유니크 확인) AJAX가 필요합니다. 귀하의 경우에는 유효성을 검사하려는 입력으로 AJAX 요청을 수행하고 정기적 인 DOM 조작으로 양식 내용/메시지/등을 업데이트하는 RJS/JS 템플릿 (JSON 본문으로 반환 됨)을 반환하면됩니다.