Ответ 1
Вам нужно использовать options_for_select помощник, например
<%= select_tag "city", options_for_select([['New York' ,'New york'], ['Los Angeles', 'Los Angeles']]) %>
У меня есть такой массив:
['New York', 'Los Angeles']
И я хочу иметь возможность генерировать параметр select/с этими значениями в форме, подобной этой:
<%= form_tag filter_city_path, :method=> get do %>
<%= select_tag "city", @list_of_cities %>
<% end %>
Но это не работает. Как вы можете видеть, я хочу передать выделение как город в URL.
Вам нужно использовать options_for_select помощник, например
<%= select_tag "city", options_for_select([['New York' ,'New york'], ['Los Angeles', 'Los Angeles']]) %>
Похоже, что в вашем массиве недостаточно аргументов. См. это руководство.
Параметры обычно должны быть отформатированы следующим образом:
[['Lisbon', 1], ['Madrid', 2], ...]
Обратите внимание на значение 1
, 2
и т.д.
Мой метод для этого состоит в том, чтобы построить массив как константу в модели, принудительно подтвердить параметры, перечисленные в константе, и вызвать его из представления
class Show < ApplicationRecord
DAYS = [ "monday", "tuesday", "wednesday", "thursday","friday", "saturday","sunday"]
validates :day, inclusion: DAYS
end
Если вы хотите, чтобы опция для этого поля была отправлена без содержимого, вам также придется вызывать `allow_blank: true 'в валидации. Как только это настроено, вы можете вызвать константу, чтобы заполнить вид в форме следующим образом:
<%= select_tag "day", options_for_select(Show::DAYS) %>
или
<%= select_tag "day", options_for_select(Show::DAYS.sort) %>
если вы хотите, чтобы он был предварительно отредактирован (что не имеет смысла с днями недели)