Collection_Select Значение по умолчанию не установлено - PullRequest
0 голосов
/ 14 августа 2010

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

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

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

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

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

Спасибо.

1 Ответ

2 голосов
/ 24 августа 2010

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

...