Rails-выберите раскрывающееся письмо, чтобы выбрать пользователя для связанной записи

У меня есть форма для обновления Jog, которая принадлежит пользователю. Я хочу, чтобы администратор мог редактировать пользователя , но вместо того, чтобы вводитьuser_id, я хочу выбрать электронную почту пользователя из выпадающего меню.

= form_for @jog, remote: true do |f|

  h2 "Edit Record"
  table.ui.single.line.table
    tb
      tr
        td
          .ui.input
            = f.text_field :distance, placeholder: "distance (meters)"
        td
          .ui.input
            = f.text_field :time, placeholder: "time (minutes)"
        - if(current_user.admin?)
          td
            .ui.input
              = f.text_field :user_id, placeholder: "User ID"
        td = f.submit "Update", class: "ui button"

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

2 ответа

  1. Вот как выбрать выпадающее меню с одним полем, видимым, но другим, переданным в форму:

     = f.select :user_id, User.all.map{|u| [u.email, u.id]}, {}, { class: "ui compact selection dropdown" }
    

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

  2. Классы css, определенные здесь, от семантического пользовательского интерфейса. Класс поиска упрощает поиск в раскрывающемся списке. В то время {selected: @jog.user-id}как опция сохраняет пользователя выбранным в любое время вы решите изменить это поле.

    <%= f.select(:user_id , User.all.collect { |user| [ user.email, user.id ] }, {selected: @jog.user_id}, {class: "ui dropdown search"} ) %>