2015-12-11 2 views
1

Я установил в своей модели («Bambino») поле с несколькими выборами, чтобы присвоить значение атрибуту string «status». Найти код ниже от моей формы частичной:Проблема с полем выбора нескольких вариантов Rails

<%= f.select(:status, options_for_select([['segnalato','segnalato'], 
['inserito','inserito'],['drop','drop'],['concluso','concluso']])) %> 

Когда я хочу изменить свою запись форма редактирования не отдайте предыдущее сохраненное значение, но автоматически устанавливает значение по умолчанию для «segnalato» (например: если I создайте новую запись, установив статус «inserito», и после того, как я хочу отредактировать запись, я получаю форму редактирования со значением по умолчанию «segnalato», пока я ожидаю увидеть в поле «inserito»).

Таким образом, когда вы редактируете запись, вероятность ошибки ввода данных очень высока. Почему так? Есть ли способ получить правильное значение «статус», которое было назначено при создании записи? Thanks

+0

Bambino gotta love it –

ответ

0

Вы уверены, что @your_record.status равно одному из этих значений? Проверьте его до дальнейшей отладки.

0

В то время как ответ Andrey Deineko, вероятно, тот, который вы хотите, есть лучший способ добиться того, что вы делаете: enum.

#app/models/bambino.rb 
class Bambino < ActiveRecord::Base 
    enum status: ['segnalato', 'inserito', 'drop', 'concluso'] 
end 

Это даст вам возможность использовать following:

<%= f.select :color, Banbino.status.to_a.map { |w| [w.humanize, w] } %> 

Это будет сохранить номер для status, позволяя при этом определить, что означает каждое число. Он ничего не будет делать для загрузки предварительно выбранного объекта (вот что ответ Andrey), но даст вам возможность сделать ваше приложение & select более кратким.

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