Rails,通过Javascript将id发送到URL

Rails,通过Javascript将id发送到URL,javascript,ruby-on-rails,Javascript,Ruby On Rails,我有一个集合选择,我正在尝试刷新页面,并在用户从集合选择中进行选择时将组织id传递给URL。您选择的集合如下所示 <div id="org-select"> <%= collection_select :org, :id, Org.all, :id, :name %> </div> 当用户从我的coll_select中选择一个新组织时,我会得到一个页面刷新。但是,我的URL看起来像 http://localhost:3000/sessions?org_i

我有一个集合选择,我正在尝试刷新页面,并在用户从集合选择中进行选择时将组织id传递给URL。您选择的集合如下所示

<div id="org-select">
  <%= collection_select :org, :id, Org.all, :id, :name %>
</div>
当用户从我的coll_select中选择一个新组织时,我会得到一个页面刷新。但是,我的URL看起来像

http://localhost:3000/sessions?org_id=2
org_id$this.val每次设置为2。当我从下拉列表中选择新组织时,它不会被更新。页面正在更新,但每次id都设置为2

这是呈现的HTML

<div id="sessions">
<div id="org-select">
  <select id="org_id" name="org[id]"><option value="1">Lumbees</option>
<option value="2">Tuskarora</option></select>
</div>

我现在看到的问题是,在我的下拉列表中,页面默认为“Lumbees”,即使我选择了另一个值,页面也会重定向回“Lumbees”。有什么想法吗?显然在某个地方有重定向,但是在app/views/sessions/index.html.erb中我找不到任何东西。

你的收藏选择id是什么,我猜是组织id或写一些自定义id,你请求更改div是不正确的

<div id="org-select">
  <%= collection_select :org, :id, Org.all, :id, :name,{},{:id=>"org_id"} %>
</div>

$("#org_id").on("change", function(){
  window.location = '/sessions?org_id='+ $(this).val()
});
请尝试下一步:

更新


您正在尝试从div元素中选择一个不应该工作的值

如果您在所安装的select元素上进行监听,它应该会工作得更好

$(document).ready(function(){
  $("#org-select select").on("change", function(){
    window.location = '/sessions?org_id='+ $(this).val()
  });
});
如果它仍然不起作用,您也可以尝试使用下面所选的值更精确

$(document).ready(function(){
  $("#org-select select").on("change", function(){
    window.location = '/sessions?org_id='+ $(this).find(':selected').val()
  });
});

页面刷新的问题出现在集合选择中…以下是所有代码

app.js

$(document).ready(function(){
    $("#org-select select").on("change",function(){
      val = $(this).val();
      window.location = '/sessions?org_id='+ val;
    });
});
index.html.erb

<%= collection_select :org, :id, Org.all, :id, :name, {:selected => params[:org_id]} %>

我需要指定默认情况下要选择的对象。

尝试了您的建议。我用结果更新了上面的问题。我现在得到了一个id,但是每次我选择一个新的组织时它都会被设置为2。你能给我看一下内部呈现的html代码吗?没有雪茄。同样的行为。嗯……还是不努力。行val=$this.children'选项:selected.val;似乎正确地获取了选项值,url似乎是错误的。当我从下拉列表中选择时,我没有得到页面刷新。我认为您还需要一个选项值,例如Any,以设置为默认值。目前,您只有两个选项,默认值为Lumbees。如果您正在执行重定向,则只能为第二个选项触发更改事件。。
$(document).ready(function(){
    $("#org-select select").on("change",function(){
      val = $(this).val();
      window.location = '/sessions?org_id='+ val;
    });
});
<%= collection_select :org, :id, Org.all, :id, :name, {:selected => params[:org_id]} %>