Я работаю над приложением rails (v.5.2.3), которое должно обеспечивать возможности фильтра данных для пространственных данных ("измерения" модели) на основе (1) различных переменных и (2) выбора лассо накарта.Обе эти опции фильтра должны быть доступны в одном и том же представлении («welcome / index»).
Соответствующая часть контроллера для подготовки и фильтрации данных:
# app/controllers/welcome_controller.rb
def index
@selected_measurements = Measurement.where(
"measurements_id IN (?) OR name = ?",
params[:spatial_lasso_selection],
params[:query_site_name]
).all
gon.selected_measurements = @selected_measurements.to_json
end
Вview Я использую form_tag для определения переменной фильтра (1):
# app/views/welcome/index.html.erb
<%= form_tag({controller: "welcome", action: "index"}, method: "get") do %>
<%= label_tag(:query_site_name, "Site name:") %>
<%= text_field_tag(:query_site_name, (params[:query_site_name] or "")) %>
<%= submit_tag("Search") %>
<% end %>
В каталоге assets у меня есть файл javascript, который создает карту листовки (через leaflet-rails), добавляет данные точек в качестве маркеров ивключает плагин leaflet-lasso для (2) выбора лассо на карте.Этот код встроен в окно приветствия для отображения карты.
Выбор лассо дает мне массив javascript measure_ids.Я хочу отправить этот массив на мой контроллер rails, чтобы отфильтровать данные и обновить представление (params[:spatial_lasso_selection]
).Я узнал, что должен сделать это с помощью ajax-запроса, но у меня возникают трудности с его реализацией.Я не понимаю, как form_tag и raw javascript могут использоваться вместе, чтобы заставить (1) и (2) работать без проблем.
Я полагаю, что вызов ajax должен выглядеть следующим образом:
$.ajax({
type: "get",
url: '/welcome/index',
data: { spatial_lasso_selection: JSON.stringify(lasso_selected_measurements) },
});