Rails,通过Javascript将ID发送到URL

时间:2013-07-23 12:46:38

标签: javascript ruby-on-rails

我有一个集合选择,我正在尝试刷新页面,并在用户从集合选择中选择时将org_id传递给URL。 collection_select看起来像这样......

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

在application.js中我有......

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

当用户从我的coll_select中选择一个新组织时,我正在刷新页面。但是,我的网址看起来像..

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中没有任何内容可以找到。

4 个答案:

答案 0 :(得分:0)

你的收藏品选择ID是什么,我猜它是org_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()
});

答案 1 :(得分:0)

尝试下一步:

<强>已更新

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

答案 2 :(得分:0)

您正在尝试从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()
  });
});

答案 3 :(得分:0)

页面刷新的问题是在集合中选择...这里是所有代码......

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]} %>

我需要指定一个默认选择的对象。