Ruby on Rails - объединить текстовое поле с Select? - PullRequest
0 голосов
/ 01 июня 2018

Мне нужно текстовое поле, в котором, когда пользователь нажимает его, появляются некоторые возможные параметры, такие как выпадающий список параметров (или список данных).Примерно так:

enter image description here

Есть ли какой-нибудь драгоценный камень или библиотека, которые могут сделать это для меня?Или есть хороший пример, как это сделать правильно?Я пытался найти, но, возможно, я не делаю правильный вопрос, потому что я не могу найти много вещей ...

РЕДАКТИРОВАТЬ:

О моем проекте:

Я занимаюсь автомобильным веб-сайтом, поэтому мне нужно отфильтровать автомобили по цене, году, километрам и т. Д. Поэтому мне нужно текстовое поле, в котором пользователи могут указать, например, диапазон цен, но в то же времяЯ хочу показать некоторые варианты, которые они могут выбрать тоже.Эти параметры являются статическими, они не пришли ни от одной модели.

Затем я буду использовать: price_start и: price_ending, чтобы сделать named_scope для фильтрации данных.

Вот моя модель:

create_table "vehicles", force: :cascade do |t|
  t.integer "kms"
  t.integer "power"
  t.string "transmission"
  t.string "fuel"
  t.string "category"
  t.integer "seats"
  t.integer "doors"
  t.string "color"
  t.string "condition"
  t.string "warranty"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
  t.integer "model_id"
  t.integer "manufacturer_id"
  t.float "cc"
  t.string "version"
  t.integer "price"
  t.integer "month"
  t.integer "year"
  t.index ["manufacturer_id"], name: "index_vehicles_on_manufacturer_id"
  t.index ["model_id"], name: "index_vehicles_on_model_id"
end

Мой индекс:

<%= form_tag(filter_vehicles_path, method: 'get') do %>
<h4><strong>

  <span>Fabricante</span>
  <%= collection_select :manufacturer, :manufacturer_id, Manufacturer.joins(:vehicles).uniq, :id, :name, {include_blank: true}, {class: "manufacturer_dropdown"} %>

  <span>Modelo</span>
  <%= grouped_collection_select :model, :model_id, Manufacturer.order(:name), :models, :name,  :id, :name, {include_blank: true}, {class: "model_dropdown", data: {models: @models}} %>

  <span>Preço</span>
  <%= select_tag :price_start, options_for_select([ "250 EUR", "500 EUR", "1000 EUR", "2000 EUR", "3000 EUR", "4000 EUR", "5000 EUR", "6000 EUR", "7000 EUR", "8000 EUR", "9000 EUR", "10 000 EUR", "12 000 EUR", "14 000 EUR", "16 000 EUR", "18 000 EUR", "20 000 EUR", "22 000 EUR", "24 000 EUR", "26 000 EUR", "28 000 EUR", "30 000 EUR", "32 000 EUR", "34 000 EUR", "36 000 EUR", "38 000 EUR", "40 000 EUR", "50 000 EUR", "60 000 EUR", "70 000 EUR", "80 000 EUR", "90 000 EUR", "100 000 EUR", "150 000 EUR", "200 000 EUR"]), prompt: "--de--" %>
  <%= select_tag :price_ending, options_for_select([ "250 EUR", "500 EUR", "1000 EUR", "2000 EUR", "3000 EUR", "4000 EUR", "5000 EUR", "6000 EUR", "7000 EUR", "8000 EUR", "9000 EUR", "10 000 EUR", "12 000 EUR", "14 000 EUR", "16 000 EUR", "18 000 EUR", "20 000 EUR", "22 000 EUR", "24 000 EUR", "26 000 EUR", "28 000 EUR", "30 000 EUR", "32 000 EUR", "34 000 EUR", "36 000 EUR", "38 000 EUR", "40 000 EUR", "50 000 EUR", "60 000 EUR", "70 000 EUR", "80 000 EUR", "90 000 EUR", "100 000 EUR", "150 000 EUR", "200 000 EUR"]), prompt: "--até--" %>

  <span>Ano</span>
  <%= select_tag :year_start, options_for_select(["1 990", "1 980", "1 970", "1 960", "1 950", "1 940", "1 930", "1 920", "1 910", "1 900"]), prompt: "--de--" %>
  <%= select_tag :year_start, options_for_select(["1 990", "1 980", "1 970", "1 960", "1 950", "1 940", "1 930", "1 920", "1 910", "1 900"]), prompt: "--até--" %>

  <span>Quilómetros</span>
  <%= select_tag :kms_start, options_for_select([ "5 000 km", "10 000 km", "15 000 km", "20 000 km", "25 000 km", "30 000 km", "35 000 km", "50 000 km", "75 000 km", "100 000 km", "125 000 km", "150 000 km", "200 000 km", "250 000 km", "300 000 km", "350 000 km", "400 000 km", "450 000 km", "500 000 km"]), prompt: "--de--" %>
  <%= select_tag :kms_end, options_for_select([ "5 000 km", "10 000 km", "15 000 km", "20 000 km", "25 000 km", "30 000 km", "35 000 km", "50 000 km", "75 000 km", "100 000 km", "125 000 km", "150 000 km", "200 000 km", "250 000 km", "300 000 km", "350 000 km", "400 000 km", "450 000 km", "500 000 km"]), prompt: "--até--" %>

  <%= submit_tag "Pesquisar" %>
</strong></h4>

Буду признателен за вашу помощь.Заранее спасибо!

1 Ответ

0 голосов
/ 01 июня 2018

Я думаю, вы просто ищете улучшенный <select>

https://select2.org, особенно для опции тегирования:

https://select2.org/tagging

Если вы хотите использовать гем для его интеграции, используйте: https://github.com/argerim/select2-rails

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