2011-01-16 3 views
20

Учитывая радиокнопку так:Rails - Как установить условную кнопку «Радио»?

<%= radio_button_tag 'permission[role_id]', '2' %> 

Как я могу сделать кнопки радио проверяется состояние состояния. Проверять только если @ permission.role_id.nil? или если @ permission.role_id == 2?

Я пробовал:

<%= radio_button_tag 'permission[role_id]', '2', @permission.role_id.nil? ? {:checked => true} : {:checked => false} %> 

Благодарности

ответ

39

The documentation for radio_button_tag говорит, что checked не является опции хэш параметров, это просто нормальный один:

radio_button_tag(name, value, checked = false, options = {}) 

Таким образом, вы должны сделать это:

<%= radio_button_tag 'permission[role_id]', '2', !!(@permission.role_id.nil? || @permission.role_id == 2) %> 
+0

Пренебрегает учетом случая '@permission.role_id == 2' по запросу в исходном вопросе. Кроме того, почему бы просто не использовать ': checked => !! @ permission.role_id.nil?' Sans trernary? Гораздо больше Ruby-esque. – coreyward

+0

Просто попробовал, но не повезло. Также пришлось обновить его, чтобы решить два варианта использования выше ... Идеи? \t \t \t \t \t <% = radio_button_tag 'permission [role_id]', '2', {: checked => ((@ permission.role_id.nil? || (@ permission.role_id == 2)? True: false) }%> – AnApprentice

+1

Странно, даже делая {: checked => (@ permission.role_id == 2? False: false)} всегда проверяется true – AnApprentice

Смежные вопросы