В раскрывающемся списке не отображаются рельсы - PullRequest
0 голосов
/ 20 марта 2019

У меня есть выпадающий список, который должен показать всех пользователей в БД.Раскрывающийся список показывает, но содержимое раскрывающегося списка нет.

This is what I mean when I say dropdown content isn't showing

Я получаю содержимое от MessagesHelper, которое:

module MessagesHelper
 def recipients_options(chosen_recipient = nil)
   s = ''
   User.all.each do |user|
    s << "<option value='#{user.id}' #{'selected' if user == chosen_recipient}>#{user.username}</option>"
   end

   s.html_safe
  end
end

И я отображаю его с помощью этогокод:

<%= select_tag 'recipients', recipients_options(@chosen_recipient), class: 'form-control chosen-it' %>

Кто-нибудь видит то, что мне не хватает?Я буду очень признателен за помощь.

1 Ответ

0 голосов
/ 20 марта 2019

Вы действительно должны использовать options_from_collection_for_select для этого.

Это, чтобы процитировать документы:

Возвращает строку тегов параметров, которые были скомпилированы путем итерации по коллекции и присвоения результата вызова value_method в качестве значения параметра и text_method в качестве текста параметра.

Таким образом, вы можете просто использовать:

<%= select_tag 'recipients', options_from_collection_for_select(User.all, :id, :username, @chosen_recipient.id), class: 'form-control chosen-it' %>

Это встроенный помощник, предназначенный для того, чтобы делать то, что вы воссоздаете, поэтому будет отлично работать.

Аргументы - это набор для создания параметров, метод для вызова значения, метод для текста параметров и выбранного значения.

Надеюсь, это поможет - дайте мне знать, как вы поживаете или если у вас есть какие-либо вопросы.

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