Попробуйте, это сработало для меня.
<button id="btn">Click</button>
<script>
console.log(btn)
let f;
btn.addEventListener('click', f=function(event) {
console.log('Click')
console.log(f)
this.removeEventListener('click',f)
console.log('Event removed')
})
</script>
<% form_for(@message) do |f| %>
<%= f.radio_button :contactmethod, 'email', :checked => true %>
<%= label :contactmethod_email, 'Email' %>
<%= f.radio_button :contactmethod, 'sms' %>
<%= label :contactmethod_sms, 'SMS' %>
<% end %>
Если вы хотите, чтобы имя_объекта начиналось с любого идентификатора, вы должны вызвать помощников формы для объекта формы:
- form_for(@message) do |f|
= f.label :email
Это также гарантирует, что все отправленные данные будут сохранены в памяти на случай каких-либо ошибок проверки и т. .
Если вы не можете вызвать вспомогательный метод формы для объекта формы, например, если вы используете вспомогательный тег (radio_button_tag и т. Д.), Вы можете интерполировать имя, используя:
= radio_button_tag "#{f.object_name}[email]", @message.email
В этом случае вы должны необходимо указать значение вручную, чтобы сохранить все отправленные данные.