Согласно (несколько официальному) это руководство, я могу заставить маркировку переключателя сделать выбор для того переключателя также. Они говорят,
Всегда используйте маркировки для каждого флажка и переключателя. Они связывают текст с определенной опцией и обеспечивают более крупный активируемый по щелчку регион.
К сожалению, я не смог получить эту функциональность для своей формы. Вот мой код:
<% form_for(@bet) do |f| %>
<%= f.label :bet_type %>
<%= f.radio_button :bet_type, "moneyline" %>
<%= f.label :bet_type_moneyline, "Moneyline" %>
<%= f.radio_button :bet_type, "spread" %>
<%= f.label :bet_type_spread, "Spread" %>
<% end %>
Я также попробовал это (потому что это - способ примера использовать FormTagHelper вместо FormHelper):
<% form_for(@bet) do |f| %>
<%= radio_button_tag :bet_type, "moneyline" %>
<%= label_tag :bet_type_moneyline, "Moneyline" %>
<%= radio_button_tag :bet_type, "spread" %>
<%= label_tag :bet_type_spread, "Spread" %>
<% end %>
Но, я все еще не могу заставить это работать. Я использую направляющие 2.3.5 и рубиновые 1.8.7.
Спасибо за чтение и возможно помощь!
Простой способ сделать это для переключателей - поместить тег ввода внутри метки, например:
<label>
<input />
This is an input!
</label>
Это действительный способ достижения вашей цели.
В Rails помощник label
может принимать блок, так что вы можете сделать:
<%= f.label :moneyline do %>
<%= f.radio_button :bet_type, "moneyline" %>
"Moneyline"
<% end %>
Woops! Извините все. Я нашел ошибку немного неограниченному пути.
Я написал код этого поста вручную ... Нет копирования-пасты. Чтобы сохранить вещи, я переименовал некоторые из ценностей, которые я использовал, потому что код, который я бежал, был немного грязным (и, по-видимому, неверно).
Итак, когда Габи попросил меня получить какой-то вывод для этих кодовых кусков, я застрял их на мой взгляд и вуаля! Ярлыки, которые выбирают их соответствующие радиоукомины! Но почему?!
Ну вот вещь. Глядя на Ouput, я понял, что мой оригинальный код не генерировал постоянный вход и метку. Для значений в HTML. Это выглядело что-то подобное:
<%= f.radio_button :bet_type, "moneyline" %>
<%= f.label :moneyline, "Moneyline" %>
Это сгенерировало:
<input id="bet_type_moneyline" name="bet_type type="radio" value="moneyline" />
<label for="moneyline">Moneyline</label>
см. В
<input id="bet_type_moneyline" name="bet_type type="radio" value="moneyline" />
<label for="moneyline">Moneyline</label>
см. Насколько input.id и label.For разные?
и только когда я провел код в моем вопросе верно.
Кажется, что это работает: метод метки радиоустановки делает вход .ID из него (object_name + "_" + значение), и метод метки метки делает метку. Для этого Object_name. И когда эти два равны, вы получаете метку выбора.
Я надеюсь, что это открытие может помочь кому-то еще по линии.
Извините, чтобы ваши шестерни тоже ничего не шли!
Совершенно не зная рельсов, требования HTML просты: вы должны создавать свои теги следующим образом:
<input id="bet_type_moneyline" name="bet_type" type="radio" value="moneyline">
<label for="bet_type_moneyline">Moneyline</label>
Итак, прежде всего, проверьте свой HTML, в вашем примере у вас отсутствовали кавычки в ... name = "bet_type type =" radio "...
Во-вторых, for =" "всегда указывает на идентификатор поля.
Теперь у вас есть интерактивная метка для поля bet_type!
Надеюсь, это поможет!