我有一个集合选择,我正在尝试刷新页面,并在用户从集合选择中选择时将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中没有任何内容可以找到。
答案 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]} %>
我需要指定一个默认选择的对象。