繁体   English   中英

Rails使用collection_select和javascript重定向

[英]Rails redirect with collection_select and javascript

我有一个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的网址。

我遇到的问题是页面中的选择框默认为第一个组织,并且当用户更改选择中的选项时,页面将触发/刷新,但是页面默认返回到该第一个组织,因此id为URL不变。

尝试使用options_for_select。 并在所选区域中给出params [value]。 您的代码将类似于:

扶手:

<%= select_tag "org_id", options_for_select(Org.all.collect{ |o| [o.name, o.id] }, {:selected => "#{params[:org_id] if params[:org_id].present?}"}), {} %>

好吧, collection_select确实有一个选项来设置默认值。 正如您在此处某些用户提供的最后一个示例中所看到的:

http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select

您可以做的就是将所选值设置为从url获得的参数,如下所示:

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

URL的?org_id=2部分在内部被转换为params[:org_id] ,因此您可以像上面的示例一样使用它。
试试看,看看是否可行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM