Передайте переменную выбора javascript контроллеру rails - PullRequest
0 голосов
/ 24 июня 2019

Я работаю над приложением 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) },
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...