2014-07-19 1 views
1

데이터베이스에 저장되지 않은 바닐라 루비 모델과 함께 simple_form을 사용하고 있습니다. db에있는 모델과 상호 작용하는 도우미 모델입니다. simple_form_for을 인스턴스 (simple_form_for :vanilla_model)가 아닌 심볼과 함께 사용할 수 있지만 클라이언트 측 유효성 검사 (HTML5 required 속성) 문제가 발생합니다.비 ActiveRecord 모델에서의 simple_form 유효성 검사가 올바르지 않음

내 양식에는 선택 상자와 일부 라디오 버튼이 있습니다. 나는 각각의 옵션을 선택하고 'submit'을 클릭한다. 양식을 제출하는 대신 브라우저는 선택을하지 않은 경우처럼 첫 번째 라디오 버튼을 강조 표시합니다 (선택하지 않고 초점 만 맞추기 만 함).

required 속성을 비활성화하여이 문제를 해결할 수 있지만 실제로 사용하고 싶습니다.

= simple_form_for(:my_model, url: my_path, method: :post) do |f| 
    = f.input_field :number, collection: numbers 
    = f.input_field :color, collection: colors, as: :radio_buttons 
    = f.button :submit 

및 생성 된 HTML

<form action="/my/path" class="simple_form my_model" method="post"> 
    <div> 
    ... utf8 & authenticity token ... 
    </div> 

    <select class="select required" id="my_model_number" name="my_model[number]"> 
    <option value=""></option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    </select> 

    <span class="radio"> 
    <input class="radio_buttons required" id="my_model_color_red" name="my_model[color]" type="radio" value="red" /> 
    <label class="collection_radio_buttons" for="my_model_color_red">Red</label> 
    </span> 
    <span class="radio"> 
    <input class="radio_buttons required" id="my_model_color_blue" name="my_model[color]" type="radio" value="blue" /> 
    <label class="collection_radio_buttons" for="my_model_color_blue">Blue</label> 
    </span> 

    <input class="button" name="commit" type="submit" value="Submit" /> 
</form> 

사람이 내가 여기에 누락 무엇을 가리킬 수 있습니다 여기에 내 생각이야? HTML5 유효성 검사를 활용하고 jQuery를 사용하려고 시도하는 것을 포기해야합니까? 페이지의 다른 부분에 대해 jQuery를 사용하고 있으므로 해당 경로를 사용할 수 있지만이를 이해하고 싶습니다.

답변

2

많은 브라우저가 HTML 5 검증을 지원하지 않기 때문에 HTML 5 검증에 의존하는 것이 일반적으로 좋지 않습니다. 모델에 유효성 검사를 추가하여 레일 방식으로 구현하는 것이 어떻습니까?

validates :color, inclusion: {in: ["red", "blue"]} 
+0

평범한 루비 모델이고 Rails 클래스/모듈을 상속하지 않으므로'validates'는 내 모델에서 사용할 수 없습니다. 꽤 가벼운이 모델을 유지하고 싶습니다. 그러나 HTML5 유효성 확인에 대한 귀하의 요점은 잘 받아 들여져 있습니다. 어쨌든 다른 곳에서 사용하고 있기 때문에 jQuery로 유효성을 검사 할 수도 있습니다. 감사합니다 – ivan

+0

http://pivotallabs.com/form-backing-objects-for-fun-and-profit/ 여기서 활성 레코드의 모든 오버 헤드없이 양식 백업 서비스 개체를 만드는 방법을 설명하는 링크입니다. –

+0

그 pivotallabs 기사는 훌륭한 읽을 거리입니다. 그것은 제가 부족했던 부분들을 채웠습니다. – ivan

관련 문제