1

사용자가 taks "name"과 "description"으로 구성된 "tasks"를 원하는 수만큼 포함 할 수있는 "project"를 만들 수있는 중첩 모델 양식이 있습니다. 이러한 작업은 jQuery를 사용하여 사용자가 동적으로 추가 할 수 있습니다.Rails 동적 중첩 모델 필드에 대한 JavaScript 유효성 검사

각 작업의 필드에 대한 클라이언트 측 유효성 검사를 제공하고 싶습니다. 현재 livevalidation 플러그인을 사용하고 있습니다.

문제는 양식을 제출할 때 레일스가 물건을 다룰 때 고유해야하므로 입력 필드에 현재 시간을 기준으로 동적 ID가 주어져야한다는 것입니다.

내가 볼때, 나는 두 가지 옵션이 있습니다

  1. 작업이 추가 될 때마다, 검증이 기반으로 필드에 설정 될 수 있도록 어떻게 든 와일드 카드를 허용하도록 자바 스크립트 검증을받을 그 이드의 일부는 변하지 않는다.

  2. 작업이 생성 될 때 필요한 자바 스크립트 인라인을 생성하십시오.

위의 작업을 수행할까요? 거기에 더 나은 옵션이 있습니까? 부분 id 일치에서 유효성 검사기로 선택된 요소를 어떻게 얻을 수 있습니까?

감사

답변

1

나는 jQuery Validation Plugin를 사용하는 것이 좋습니다 것입니다. 그것은 당신이 대신 자신의 ID의 속성 이름을 기준으로 검증을 만들고, 서로 다른 형태의 동일한 규칙을 사용할 수 있습니다 :

 
validation = { rules: { "name": "required", "description": "required" } } 
jQuery("#form-1").validate(validation); 
jQuery("#form-2").validate(validation); 

당신이 명시 적으로 ID를 전달하려는 경우 생성하는 기능을 사용할 수 있습니다 규칙 :

 
function validation_rules(index){ 
    return { 
    rules: { 
     "name["+index+"]": "required", 
     "description["+index+"]": "required" 
    } 
    }; 
} 
+0

감사 팬, 나는 실제로이 플러그인으로 가졌지 만, 오류 메시지를 배치 할 때 제어가 부족하여 좌절감을 느끼기 때문에 livevalidation을 사용했습니다. – dangerousdave

+2

jQuery 플러그인의 errorPlacement 속성을 사용하여 오류 메시지의 위치를 ​​덮어 쓸 수 있습니다. 즉, 페이지의 아무 곳에 나 배치하고 원하는 CSS 클래스로 스타일을 지정할 수 있습니다. –

+0

맞아, 방금 솔루션을 구현하려고 시도했지만 불행히도 레일스 accepts_nested_attributes_for는 "id"와 "name"이 고유해야합니다. 예 : dangerousdave

관련 문제