Я хотел бы сделать что-то очень простое: показать один div, если выбран один переключатель, скрыть другой div и открыть этот div, если выбран другой переключатель, тем самым скрыв первый div.
Вот что у меня есть, что не работает:
row
.col-sm-6.form-group
= form.radio_button "meta_data[quantity_meta][type]", value: "range", onclick: "toggleDiv('.toggle-range', '.toggle-fixed');"
= form.label "meta_data[quantity_meta][type]", "range"
.row
.col-sm-6.form-group.fixed
= form.radio_button "meta_data[quantity_meta][type]", value: "fixed", onclick: "toggleDiv('.toggle-fixed', '.toggle-range');"
= form.label "meta_data[quantity_meta][type]", "fixed"
.div.toggle-range
= form.label "YO!", hidden: true
.div.toggle-fixed
= form.label "Can't stop the feeling!", hidden: true
И JavaScript (доступный через конвейер ресурсов):
function toggleDiv(hideDiv, showDiv) {
$(hideDiv).hide();
$(showDiv).show();
}
Довольно просто. Тем не менее, когда я отображаю страницу и проверяю свои «радиокнопки», я вижу следующее:
<input type = "radio" value = "{:value=>"range", :onclick=>"toggleDiv('.toggle-range', '.toggle-fixed')"}" name = "meta_data[quantity_meta][type]">
Он помещает мой атрибут onclick в атрибут value переключателя.
Как я могу достичь своей цели здесь?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это не имеет ничего общего с Haml или вашим javascript. Подпись radio_button:
radio_button(method, tag_value, options = {})
Поскольку вы передаете хэш в качестве второго аргумента, он преобразуется в строку. Вместо этого вам нужно:
= form.radio_button "meta_data[quantity_meta][type]", "range", onclick: "toggleDiv('.toggle-range', '.toggle-fixed');"