1

クリックが発生したときにURLにIDを設定するためにJSを起動するcollection_selectがあります。これがコードです。

アプリケーション.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]} %>

?org_id=2URLの部分はparams[:org_id]内部で変換されているので、上記の例のように使えます。
試してみて、動作するかどうかを確認してください。

于 2013-07-23T19:16:58.343 に答える