1

多数の連絡先を持つクライアントを持つ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| %>
4

1 に答える 1

0

これが私が行う方法です。ここに入力したばかりなので、これはテストされていませんが、開始するのに適した場所になるはずです。今後さらにヘルプが必要な場合は、コードを投稿してください。

<%= 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
于 2013-06-13T18:59:30.717 に答える