簡體   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