ruby on rails - проблема с выбором формы помощника - PullRequest
0 голосов
/ 17 марта 2010

У меня есть форма, в которой пользователи могут добавлять свои рабочие часы, просматривать их и редактировать (все на одной странице). При добавлении рабочего времени пользователь должен выбрать проект из выпадающего списка. В случае, если действие добавляет новую запись часа, раскрывающееся поле должно оставаться пустым (не выбрано), в случае, если действие редактируется, необходимо выбрать раскрывающееся поле с соответствующим значением. Чтобы преодолеть эту проблему, я написал следующий код

<% if params[:id].blank?%>
     <select name="hour[project_id]" id="hour_project_id">
         <option value="nil">Select Project</option>
         <% @projects.each do|project|%>
             <option value="<%=project.id %>"><%=project.name%></option>
         <% end%>
    </select>
 <% else %>
   <%= select('hour','project_id', @projects.collect{|project|[project.name,project.id]},{:prompt => 'Select Project'})%>
 <% end %>

Таким образом, в случае действия сохранения, я делал выпадающий список только с html, а в случае действия редактирования я делал это с помощью метода collect. Он работает нормально, пока я не попытался закодировать ошибки. Проблема в том, что когда я использую метод ошибки: validates_presence_of: project_id, он не распознает его в html-форме раскрывающегося списка и не отображает сообщение об ошибке (работает только для выпадающего списка с помощью метода collect).

Я буду очень признателен за ваши инструкции и помощь в этом вопросе

1 Ответ

1 голос
/ 17 марта 2010

options_from_collection_for_select (коллекция, value_method, text_method, selected = nil) ваш друг:

<%= select('hour','project_id', options_from_collection_for_select(@projects, :id, :name, @hour.project_id),{:prompt => 'Select Project'})%>

Если существует объект @hour, который является новым и поэтому не имеет project_id, значение будет равно nil, и ничего не будет выбрано - в качестве альтернативы будет выбрано значение @hour.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...