Атрибут «выбранный» простой формы установлен неправильно - PullRequest
0 голосов
/ 01 марта 2019

У меня есть простая настройка формы для модели.Хотя это не работает правильно.

<%= f.input :folder, collection: current_user.folders, label_method: :name, value_method: :slug, selected: params[:folder] %>

Я устанавливаю атрибут selected для ввода через параметры.Поэтому, если URL-адрес заканчивается следующим образом: ?folder=First+Folder, я бы хотел, чтобы входные данные выполняли поиск по набору, указанному в коде выше (т. Е. current_user.folders), и устанавливали его как выбранный.И это вроде работает, но не совсем.

Допустим, параметры в теге выбора выглядят следующим образом

  • Первая папка
  • Вторая папка
  • Третья папка

Независимо от значения params [: folder], для тега select всегда будет выбран первый параметр.В данном случае: «Первая папка».Не имеет значения, установлен ли params[:folder] «Вторая папка» или «Третья папка».Он всегда будет установлен на «Первая папка» или первая опция в теге выбора.

Есть предложения?

Ответы [ 2 ]

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

Решил это.Мне нужно было передать слаг к выбранному атрибуту, а не к имени.Если вы реализуете это, вы, вероятно, используете id вместо slug.В любом случае, это то, что сработало для меня.

<%= f.input :folder, 
  collection: current_user.folders, 
  label_method: :name, 
  value_method: :slug,
  selected: @folder.slug
%>
0 голосов
/ 01 марта 2019
  1. опция вместо "selected" поставить значение: params [: folder] "
  2. Я думаю, что более элегантное решение в контроллере, скажем, у вас есть модель" Файл ".Поскольку значение может быть изменено и выбрано будет иметь неправильное значение
def new
  @file = File.new
  @file.folder = params[:folder]
end
...