Как установить текущее значение в коллекции в simple_form

Вот фрагмент кода в edit.html.erb, который не работает. Цель кода - заполнить форму для редактирования. Коллекция используется с вариантами да и нет. Как я могу установить для коллекции текущее «активное» значение с опцией :selected?

<%= simple_form_for @category do |f| %>

  <%= f.input :name, :disabled => true, :required => false %>  
  <%= f.input :description %> 
  <%= f.input :active, :collection => ['Yes', 'No'], :selected => f.active %> 
  <%= f.button :submit %>  
<% end %>

Ошибка о том, что актив не является методом в f.input :active, :collection.


person user938363    schedule 18.09.2011    source источник


Ответы (1)


Предполагая, что атрибут active для категорий является логическим, попробуйте:

:selected => (@category.active? ? 'Yes' : 'No')
person James    schedule 19.09.2011
comment
Это не работает. В коллекции Active отображается только значение «Да», даже если значение active равно false. Спасибо. - person user938363; 19.09.2011
comment
Является ли атрибут active логическим? Было бы разумнее, если бы это было логическое значение, но если это строка, попробуйте :selected => (@category.active == 'Yes' ? 'Yes' : 'No') - person James; 19.09.2011
comment
Оно работает. Вот код: ‹%= f.input :active, :collection =› [['Да', 1], ['Нет', 0]], :selected =› (@category.active? ? 1 : 0 ) - person user938363; 19.09.2011
comment
Вы также можете использовать лямбду: selected: lambda { |category| category.id == params[:category_id] } - person karmi; 15.10.2014