1

我有一个 collection_select,当点击发生时,它会触发一些 JS 在我的 URL 中设置一个 id。这是代码。

应用程序.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。

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

4

2 回答 2

1

尝试使用 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?}"}), {} %>
于 2013-07-23T20:10:58.687 回答
0

好吧,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]内部被翻译,所以你可以像上面的例子一样使用它。
试一试,看看它是否有效。

于 2013-07-23T19:16:58.343 回答