簡體   English   中英

Rails顯示來自options_from_collection_for_select的索引結果

[英]Rails show index results from options_from_collection_for_select

我有一個帶有has_many Contacts的客戶端的Rails應用程序。 我想通過選擇“客戶端”來修改聯系人/索引列表。 因此,用戶選擇客戶端,然后屏幕刷新,顯示該客戶端的聯系人。

我從以下下拉菜單開始:

<%= select_tag 'Client', options_from_collection_for_select(Client.all, :id, :client_name) %>

但是,我不確定如何修改獲取聯系人的表代碼:

  <% @contacts.each do |contact| %>

我需要使用jQuery嗎?

謝謝您的幫助!

更新1:

我可以在語句中添加@selected_client

<%= select_tag 'Client', options_from_collection_for_select(Client.order(:client_name), :id, :client_name, @selected_client) %>

然后使用:

  <% @selected_client.contacts.each do |contact| %>

請注意,這是我的操作方式,請注意,由於我只是在此處輸入,因此未經測試,但這應該為您提供一個良好的起點。 如果您需要更多幫助,請發回代碼。

<%= select_tag 'client', options_from_collection_for_select(Client.all, :id, :client_name) %>
<%= select_tag "client_contacts" %>

然后,您需要一些用於ajax的js:

$(document).ready(function() {
  $("#client").on("change", function() {
    var the_id = $(this).val();
    $.getJSON("/client/contacts", {id: the_id},       
      function(data){
          var options = '';
          for (var i = 0; i < data.length; i++){
              options += '<option value="' + data[i].id + '">' + data[i].name + '</option>';
          }
          $("#client_contacts").html(options);      
      });
  });
});

然后,您需要一條用於客戶/聯系人的路線:

get 'client/contacts/:id', to: 'client/contacts'

控制器示例:

def contacts
  @client = Client.find(params[:id])
  respond_to do |format|
    format.json { render: json: {@client.contacts.to_json}}
  end  
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM