У меня есть список флажков на форме. Из-за пути CSS структурирован, элемент маркировки разрабатывается непосредственно. Это требует, чтобы я вложил флажок в теге.
Это работает в необработанном HTML при нажатии на текст метки, состояние изменений флажка. Это не работает с направляющими <%= f.check_box %>
помощник, однако, потому что это производит скрытый входной тег сначала.
Таким образом,
<label>
<%= f.check_box :foo %>
Foo
</label>
это - вывод, который я хочу:
<label>
<input type="checkbox" ... />
<input type="hidden" ... />
Foo
</label>
... но это - то, какие направляющие дает мне:
<label>
<input type="hidden" ... />
<input type="checkbox" ... />
Foo
</label>
Таким образом, поведение маркировки на самом деле не работает :(.
Там какой-либо путь состоит в том, чтобы обойти это?
Rails генерирует скрытый ввод перед флажком, потому что ему нужен способ узнать, была ли форма отправлена с отключенным флажком. Порядок чувствителен к , поскольку флажок отменяет скрытый ввод, если он был отмечен. Подробнее см. Rails API .
Вы должны использовать
вместо того, чтобы заключать флажок в теге label.
Это не способ использования тега 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" ... />
Теперь «Foo» действует как метка для элемента флажка, и вы можете щелкнуть «Foo», чтобы установить или снять отметку.