我有一个 collection_select,当点击发生时,它会触发一些 JS 在我的 URL 中设置一个 id。这是代码。
application.js
$(document).ready(function(){
$("#org_id").on("change", function(){
val = $(this).val();
window.location = '/sessions?org_id='+ val;
});
});
查看
<div id="org-select">
<%= collection_select :org, :id, Org.all, :id, :name %>
</div>
渲染的html
<div id="org-select">
<select id="org_id" name="org[id]"><option value="1">bustas</option>
<option value="2">wintas</option></select>
这一切的作用是给我一个像/sessions?org_id=2 这样的 url。
我遇到的问题是页面中的选择框默认为第一个组织,当用户更改选择中的选项时,页面会触发/刷新,但页面默认返回第一个组织,因此URL 中的 id 不会改变。
最佳答案
尝试使用 options_for_select。并在选定区域中给出 params[value]。您的代码将类似于:
rails :
<%= select_tag "org_id", options_for_select(Org.all.collect{ |o| [o.name, o.id] }, {:selected => "#{params[:org_id] if params[:org_id].present?}"}), {} %>
关于javascript - Rails 使用 collection_select 和 javascript 进行重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17818516/