Использование collection_select или select или select_tag - PullRequest
1 голос
/ 16 марта 2011

(ПРИМЕЧАНИЕ. Я прочитал http://shiningthrough.co.uk/Select-helper-methods-in-Ruby-on-Rails,, но все еще не знаю, что выбрать)

У меня есть форма, которая будет использоваться в качестве поискового фильтра (метод get).

<%= form_tag(reports_courses_allocated_path, :method =>'get') %>
<%= collection_select(:course, :id, @courses, :id, :title, :include_blank => "All Courses") %>
</form>

Выше приведен вывод, который я хочу для тегов, но нет «выбранного» параметра, в котором я мог бы передать значение params.Мне также не нравится тот факт, что название курса [id], я бы предпочел, чтобы он назывался course_id

Я мог бы сделать:

<%= select_tag(:course_id, raw("<option>All Courses</option>") + options_from_collection_for_select(@courses, :id, :title, params[:course_id])) %>

Но мне не нравитсяфакт, что я объединяю варианты, но это может быть моим лучшим выбором.

Какие-либо мнения / предложения?

1 Ответ

2 голосов
/ 16 марта 2011

Должно ли это быть значение params, которое устанавливает 'selected' в вашем случае?Значение «selected» для collection_select основано на значении @ course.id - вы можете убедиться, что @course представляет собой тот, который должен быть выбран.

Что касается имени, я бы придерживалсяRails по умолчанию даже при написании вашего собственного HTML.Это то, что диктует, как параметры входят в ваши действия.Если ваши элементы имеют имена course [id], course [name], course [type] и т. Д., Параметры будут

{ :course => { :id => xx, :name => xx, :type => xx } }

, что удобно, потому что тогда вы можете позвонить

Course.new(params[:course])

Кроме того, вам не нужно закрывать свои формы собственным тегом HTML-формы.Метод form_tag принимает блок:

<%= form_tag('/posts') do -%>
  <div><%= submit_tag 'Save' %></div>
<% end -%>

И наконец ... Я использовал select_tag и создал список опций раньше.Это может показаться уродливым, но вы можете встроить его в методы в помощнике вида, где он не загромождает ваш rhtml и где он может быть проверен модулем.

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