2010-05-18 2 views
14

양식에 체크 박스 목록이 있습니다. CSS가 구성되는 방식 때문에 레이블 요소는 직접 스타일이 지정됩니다. 이를 위해서는 태그 안의 확인란을 중첩해야합니다.내부 포장 <% = f.check_box %><label>

이것은 원시 HTML에서 작동하며 레이블 텍스트를 클릭하면 확인란의 상태가 변경됩니다. 하지만 숨겨진 입력 태그를 먼저 출력하기 때문에 도우미 <%= f.check_box %> 도우미와 함께 작동하지 않습니다. 나에게주는이이 레일 무엇

<label> 
    <input type="checkbox" ... /> 
    <input type="hidden" ... /> 
    Foo 
</label> 

...하지만 됩니다 :

<label> 
    <input type="hidden" ... /> 
    <input type="checkbox" ... /> 
    Foo 
</label> 
요약

,
<label> 
    <%= f.check_box :foo %> 
    Foo 
</label> 

은 내가
을 원하는 출력

레이블 동작이 작동하지 않습니다. lly 일 :(.

이 문제를 해결할 수있는 방법이 있습니까?

+0

그래서 en.yml에서

<%= f.label( :foo, "#{f.check_box(:foo)} #{t('helpers.label.foo')}".html_safe ) %> 

당신이이'= "ID"'를 들어, 레이블이를 대상으로 지정하지 않는 경우의''

+0

맞습니다. 그러나 nfm은 주문이 민감하고 다른 방법으로는 실제로 작동하지 않는다고 언급했습니다. –

답변

7

레일즈는 확인란이 선택되지 않은 상태로 제출되었는지 여부를 알 수있는 방법이 필요하기 때문에 확인란 앞에 숨겨진 입력을 생성합니다. 의 순서는입니다. 확인란을 선택하면 숨겨진 입력이 무시되므로 무시됩니다. 자세한 내용은 Rails API을 참조하십시오.

라벨 태그에 체크 상자를 포장하는 대신 <label for="checkbox_id">을 사용해야합니다.

+1

이 일을 내가 결국,하지만 내 자신의 ID를 제공하는 불필요한 것처럼 보였다. 그래서 레이블에 사용할 수 있습니다. _why_에 대한 정보 주셔서 감사합니다. –

+2

Twitter 부트 스트랩이 중첩 된 구문을 사용하고 있습니다. – Jan

-3

이것은 label 태그를 사용하는 방법이 아닙니다. 체크 박스 요소의 레이블로

<input type="hidden" ... /> <!-- doesn't really matter where these are --> 

<label for="id_of_element">Foo</label> 
<input type="checkbox" id="id_of_element" ... />

이제 "푸"행위를하고 확인하거나 선택을 취소 "푸"를 클릭 할 수 있습니다 : 대신에 다음과 같이 사용하십시오.

+9

'label' 태그를 사용하는 것은 완전히 받아 들일 수있는 방법입니다. 여기에서보십시오 : http://www.w3.org/TR/html401/interact/forms.html#h-17.9.1 특히 this : "for = idref [CS].이 속성은 정의 된 레이블을 다른 컨트롤과 명시 적으로 연관시킵니다 이 속성의 값은 동일한 문서의 다른 컨트롤의 id 속성 값과 동일해야합니다.결석 할 때 정의 된 라벨은 엘리먼트의 내용과 연관되어있다. "* EDIT * : HTML 하이 - 말을 떼어 내고 Rails가 'label'의 올바른 사용과 호환되지 않는 곳이라고 알려겠습니다 – Ben

37

이 나를 위해 작동합니다

<%= f.label :foo do %> 
    <%= f.check_box :foo %> 
    Foo 
<% end %> 

는 렌더링 :

<label for="foo"> 
    <input name="foo" type="hidden" value="0"> 
    <input checked="checked" id="foo" name="foo" type="checkbox" value="1"> 
    Foo 
</label> 
+1

들여다 보인다 이런 방식으로 여기에 설명 된 자동 음역 기능을 사용할 수있는 기회가 없습니다 http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-label. 맞습니까? – woto

0

이 내가 그 번역을 포함 사용하는 솔루션입니다.

en: 
    helpers: 
    label: 
     foo: Foo 
관련 문제