Rails + Ransack — коллекция выпадающих списков?

Мне нравится драгоценный камень разграбления за его гибкость, однако я не могу заставить стандартный collection_select работать должным образом. Возможно, кто-то сможет помочь.

Пример:

      <%= collection_select(:expense, :project_id, Project.all, 
        :id, :name, { prompt: 'Select Project'}, { class: 'span4' }) %>

в данном случае это код из экрана ввода расходов, поэтому первый параметр — это объект расходов. Каким он должен быть в форме обыска? Кроме того, я знаю, что мне нужно получить суффикс там. В этом примере я хотел бы, чтобы project_id_eq был шаблоном поиска.

Кроме того, моя форма находится на контроллере, а представление называется «отчеты», я не помещаю этот поиск в контроллеры по умолчанию.

Спасибо!


person Atari2600    schedule 19.12.2012    source источник


Ответы (2)


Кажется, это сработает.

<%= f.select :project_id_eq, options_from_collection_for_select(Project.all, "id", "name", @search.project_id_eq) %>

Если у кого-то есть другое предложение, тоже хотел бы его узнать.

person Atari2600    schedule 19.12.2012
comment
Это работает довольно хорошо, за исключением того, что вы не можете установить подсказку (Select). - person dspencer; 29.06.2013
comment
@dspencer Просто поместите include_blank: true вне круглых скобок: <%= f.select :languages_name_eq, options_from_collection_for_select(Language.all, "id", "name"), include_blank: true %> - person bigpotato; 06.02.2014
comment
не могли бы вы рассказать, как добавить эквалайзер, когда мы используем опцию для метода выбора, и мы вызываем это из помощника - person gangothri; 03.10.2019

Чтобы сделать это с помощью include_blank, поместите его за скобки:

ex:

<%= f.select :languages_id_eq, options_from_collection_for_select(Language.all, "id", "name"), include_blank: true %>

== ОБНОВЛЕНИЕ ==

еще лучше, используйте f.collection_select. Таким образом, после того, как пользователь ищет что-то с помощью раскрывающегося списка, эта опция предварительно выбирается на следующей странице:

<%= form.collection_select :vendor_id_eq, Vendor.all, :id, :name, include_blank: true %>
person bigpotato    schedule 05.02.2014