Collection_Select Значение по умолчанию не установлено

У меня странная проблема с collection_select, который я использую в представлении профиля редактирования в своем приложении rails. База данных обновляется правильным значением, однако значение по умолчанию не выбирается для поля выбора, когда пользователь переходит к редактированию своего профиля. Я не могу заставить работать :include_blank => true или :prompt => true.

Вот код

Редактировать вид:

<%= render :partial => 'player_form' %>

_player_form Частично:

<% form_for @user do |f| %>
    <p>
        <%= f.label :course_id %><br / >
        <%= f.collection_select(:course_id, Course.all, :id, :name, {:prompt => "No Home    Course"})  %>
    </p>
<% end %>

Сгенерированный HTML:

<p> 
    <label for="user_course_id">Course</label><br / > 
<select id="user_course_id" name="user[course_id]">
        <option value="1">Bedford Springs</option> 
        <option value="2">Down River</option> 
        <option value="3">King Valley </option> 
        <option value="4">Test</option></select> 
</p> 

Поскольку я использую канкан для авторизации, у меня есть пустое действие редактирования в моем контроллере, так как канкан автоматически инициализируется

@user = User.find(params[:id])

Я попытался добавить эту строку для редактирования, и это ни на что не влияет. Также очень странным в этой проблеме является то, что все остальные поля в партиале формы редактирования заполняются правильными текущими значениями из базы данных. Кроме того, в таблице Users есть столбец course_id, который является внешним ключом для таблицы Courses, и я проверил ассоциацию в консоли, и она возвращает правильный курс_id. Ассоциации настроены правильно, потому что у меня есть. Поэтому я считаю, что у меня проблема с синтаксисом моего collection_select, но я не уверен, что это такое.

Я ценю любую помощь.

Спасибо.


person dbaugh    schedule 13.08.2010    source источник
comment
Также в консоли @user.course_id возвращает правильное значение. Я также могу отобразить @user.course_id в представлении.   -  person dbaugh    schedule 24.08.2010


Ответы (1)


По той или иной причине у меня был установлен course_id как varchar вместо int в базе данных. Изменение его тоже на int устранило проблему.

person dbaugh    schedule 24.08.2010