Как проверить флажок в Haml, используя check_box_tag

Может ли кто-нибудь сказать мне, как установить эти флажки для проверки? Я уверен, что это просто, но после часа попыток я думаю, что мне нужно спросить! Спасибо!

= form_tag movies_path, :id => 'ratings_form', :method => :get do
  Include: 
  - @all_ratings.each do |rating|
    = rating
    = check_box_tag "ratings[#{rating}]", 
  = submit_tag 'Refresh', :id => 'ratings_submit'

Ответ 1

Ref check_box_tag

check_box_tag "ratings[#{rating}]",  1, !!(rating.rating)

Ваш 2nd parameter должен быть value для флажка

Ваш 3rd parameter должен быть boolean condition, который возвращает true/false и зависит от него. checked/unchecked

Ответ 2

check_box_tag "ratings[#{rating}]",  1, @selected.include?("#{rating}")

где @selected - массив с выбранным элементом.

Ответ 3

Используйте true для Checked или false для Unchecked в конце строки

check_box_tag "ratings[#{rating}]", true #checked

или

check_box_tag "ratings[#{rating}]", false #unchecked

Ответ 4

В соответствии с api док-станцией тег флажка имеет следующие параметры:

check_box_tag(name, value = "1", checked = false, options = {})

Это означает, что первым значением является имя, второе значение - "значение", а третье значение - это флажок, который по умолчанию равен false. Итак, чтобы проверить или снять флажок, вы можете сделать следующее:

- if (some condition)
  = check_box_tag "ratings[#{rating}]", "anystring", true
- else 
  = check_box_tag "ratings[#{rating}]" 

Вторая строка просто помещает случайную строку в поле значений, потому что в этом случае это не имеет значения.

Ответ 5

Основываясь на ответе Сали. Как ни странно, check_box_tag возвращает флажок без текста меток. Здесь вы можете отображать текст, если вы выполняете итерацию по массиву.

- Puppies.each do |puppy|
  = check_box_tag(puppy.name, puppy.name, puppy.goodboy?)
  = puppy.name

Ответ 6

= check_box_tag "ratings[#{rating}]",{},{:checked => ""}