폼에 폼 리셋 후 추가
5219 단어 nested_form
묘사
현재 nested form의form for helpers는 부모 helper를 호출하고 완성된 후에 리셋을 실행하여 청사진을 생성합니다.즉, 원래 양식이 끝나면 필드를 호출합니다. 즉,1. 청사진의 파일 필드는 자동으로 부모 창을 여러 부분으로 업그레이드하지 않습니다.(또는 더 정확히 말하면 부모 창을 여러 부분으로 자동으로 업그레이드하지만, 부모 창은 이미 나타나고, 이 사실을 출력에 포함하기에는 이미 늦었다.)
2. 클라이언트 검증은 청사진의 필드에 검증 프로그램을 생성할 수 없습니다. 클라이언트 검증의 폼이 완성된 후에만 청사진을 나타낼 수 있기 때문입니다.
이 요청은 폼 forcall (and
</form>
표시의 정외부에서 폼 forcall (and </form>
표시의 정내부로 청사진을 이동함으로써 상기 문제를 해결했습니다.bcardarella/클라이언트 검증 #421 이후에 만약 우리가 이 문제를 해결할 수 있다면, 끼워 넣은 # 폼과 클라이언트 # 검증은 최종적으로 (추가 테스트를 기다리는 중) 바로 사용할 수 있을 것입니다.필요한 유일한 통합은 다음과 같은 추가 필드에서 유효성 검사를 활성화하는 것입니다.
$('form').on('nested:fieldAdded', function(event) {
$(event.target).find(':input').enableClientSideValidations();
});
편집: 보상으로 자동 다부분 행위에 규범을 추가했습니다.이전에 실패하고 나중에 일하다.(3.1+만 해당, Rails가 바로 이때 추가되기 때문입니다.)토론 #1
감사합니다!토론 #2
너도 How To: Custom nested form builders에서 수정할 수 있니?토론 #셋
완료.토론 #4
감사합니다!토론 #5
플러그인 폼과 클라이언트 검증을 사용하는wiki 페이지를 써 주시겠습니까?나는 다른 사람에게 매우 도움이 될 것이다.다시 한 번 감사합니다!토론 #6
곧 도착합니다.우선, 나는 나의 테스트 프로그램에서 방탄을 실현할 것이다.(현재 문제가 하나 있습니다. 단순 form과 관련이 있을 수 있습니다. 부모 창에서 계승되지 않았습니다. wrapper 옵션은div.fields를 포함하지 않아서 모든 js를 파괴할 수 있습니다.)토론 #7
는simple_fields_for
내부에서 사용하는 것 같다simple_nested_form_for
.사용하십시오fields_for
.고맙습니다.이것이 문제를 해결했다. 여기서 나는 바보처럼 항상 나의 간단한 표에 간단한 필드를 사용하는데, 이것은 분명히 불필요한 것이다.이제 비키를 보자.토론 #8
참조:https://github.com/ryanb/nested_form/wiki/Integrating-with-client_side_validations토론 #9
대박!너 정말 대단하다!안녕하세요.taavo,lest,ryanb에서 훌륭한 일을 해 주셔서 감사합니다!
그런데 왜 클라이언트 검증이 나한테 도움이 안 되는지 모르겠어...
저는 덧붙이는 형식으로 0.3.2를 썼어요.
이것은 나의 표다.html.햄
= simple_nested_form_for(@venue, :validate => true) do |f|
= f.error_notification
.form-inputs
= f.input :name
= f.fields_for :contact_datum do |c|
= c.fields_for :emails do |email|
= render 'email_fields', :f => email
.links
= c.link_to_add 'Add email', :emails
내 e-메일 주소 필드의 일부:.nested-fields
= f.input :address, :label => "Email", :validate => true
= f.input :kind, :label => "Type", :collection => %w(Work Home), :selected => "Work"
= f.link_to_remove "Remove this email"
: name 필드 (끼워넣지 않음) 에서 클라이언트 검증이 유효합니다.그러나 플러그인:address 필드에는 적용되지 않습니다.
어떠한 도움도 감격해 마지않을 것이다.)
토론 #10
확인해 봐. 너는 이미 위키의 설명에 따라 했지?위에 링크가 있습니다.이외에, 인증 프로그램이 올바르게 설정되었는지 확인하기 위해 자바스크립트 컨트롤러에서 작업을 시작해야 할 수도 있습니다.이름이 일치하지 않을 수도 있습니다.만나다:
토론 #11
.토론 #12
이렇게 빨리 대답해 주셔서 감사합니다!네, 저는 이미 위키의 설명에 따라 했습니다.
그러나 3단계에서 폼을 불러올 때 존재하는 플러그인 필드에 클라이언트 검증을 받아야 할 때 클라이언트 검증이 없습니다.
나는 너의 이름이 일치하지 않는 것에 대한 대답을 모르겠다.
네가 언급한 것은
ClientSideValidations.forms["your_form_id"].validators
이지만, 비키가 언급한 것은토론 #13
너 무슨 뜻이야?ClientSideValidations.forms
네, 무슨 말인지 알겠어요.내 자바스크립트 컨트롤러에서 플러그인 필드의 검증 규칙인 이메일을 보았습니다.
다음은 내 콘솔 발췌문입니다.
ClientSideValidations.forms["edit_venue_10"]
Object {type: "NestedForm::SimpleBuilder", error_class: "help-inline", error_tag: "span", wrapper_error_class: "error", wrapper_tag: "div"…}
error_class: "help-inline"
error_tag: "span"
type: "NestedForm::SimpleBuilder"
validators: Object
venue[contact_attributes][email]: Object
format: Array[1]
0: Object
allow_blank: true
message: "Not a valid email"
with: /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
global: false
ignoreCase: true
lastIndex: 0
multiline: false
source: "^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$"
이것은 맞는 것 같지 않습니까?ClientSideValidations.formBuilders
이름이 일치하는지 확인해야 합니다.위에서 말한 바와 같이 우리는 클라이언트 검증이'지점 [연락처 속성][이메일]'이라는 입력을 찾고 있음을 알고 있다.이것이 토론 #14
,토론 #15
,fields_for :contact_datum
html에서 생성된 내용입니까?나는 답안이 부정적이라고 생각한다.과거에 나는 rails에 단점을 설정해서 이런 문제들을 해결했다.검증하다.그리고 걸어가.그렇게 복잡하지 않습니다. 제 문제는 일치하지 않는 이름을 사용하고, 폼에 필드를 추가한 후에 클라이언트 검증을 제대로 초기화하지 못했습니다.
fields_for :emails
네 말이 맞아!이름이 일치하지 않습니다...NestedSimpleForm은 다음과 같은 html 코드를 생성합니다.
venue[contact_datum_attributes][emails_attributes][0][address]
클라이언트 인증에서 찾은 입력의 이름을 수정할 방법이 있습니까?클라이언트 인증 문서에서 어떻게 해야 할지 찾을 수 없습니다.다시 한 번, @taavo의 도움에 감사 드립니다!덕분에 우리는 해결 방안에 가까워졌습니다:
input :address
토론 #16
자바스크립트가 폼에 새 필드를 추가하기 전에 클라이언트 검증이 없습니다.Reference
이 문제에 관하여(폼에 폼 리셋 후 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/ryanb/nested_form/issues/211텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)