将javascript选择变量传递给rails控制器

将javascript选择变量传递给rails控制器,javascript,ruby-on-rails,ajax,leaflet,Javascript,Ruby On Rails,Ajax,Leaflet,我正在开发一个rails v.5.2.3应用程序,该应用程序应该为基于地图上1个不同变量和2个套索选择的空间数据模型测量提供数据过滤功能。这两个过滤器选项应在同一视图欢迎/索引中可用 控制器中用于准备和过滤数据的相关部分: # app/controllers/welcome_controller.rb def index @selected_measurements = Measurement.where( "measurements_id IN (?) OR name

我正在开发一个rails v.5.2.3应用程序,该应用程序应该为基于地图上1个不同变量和2个套索选择的空间数据模型测量提供数据过滤功能。这两个过滤器选项应在同一视图欢迎/索引中可用

控制器中用于准备和过滤数据的相关部分:

# 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 
在视图中,我将form_标记用于过滤器变量定义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 %>

我对ajax请求也有问题。相反,我使用输入文本值属性将javascript变量传递给控制器。首先,只需使用在index.html中具有特定id的隐藏输入属性创建简单表单。“下一步创建”按钮,将变量发送到

<form id "myForm" action="/welcome/index">
  <input type="hidden" id="myVar" name="varParams">
</form>
<button id="btnSend">SEND</button>
接下来,只需在welcome_controller.rb中检索myVar参数


我没有尝试这个解决方案,因为这个答案是在问题被问了很久之后提交的,我没有设置来测试它了。尽管如此,我还是决定接受它,因为它似乎很好地回答了这个问题。希望这个答案对其他人有用。
<form id "myForm" action="/welcome/index">
  <input type="hidden" id="myVar" name="varParams">
</form>
<button id="btnSend">SEND</button>
<script>
document.getElementById('btnSend').addEventListener('click', function () {
  document.getElementById("myVar").value = "myValue";
  document.getElementById("myForm").submit();
});
</script>
  def index
    myVar = params[:varParams]
    # Do something with myVar variable  
  end