我有一个Rails应用程序,其客户端有很多联系人。我想用选择的客户端修改联系人/索引列表。因此,用户选择客户端并刷新屏幕,显示该客户端的联系人。
我从这个下拉选择开始:
<%= select_tag 'Client', options_from_collection_for_select(Client.all, :id, :client_name) %>
但是,我不确定如何修改获取联系人的表格代码:
<% @contacts.each do |contact| %>
我需要使用jquery吗?
感谢您的帮助!
UPDATE1:
我可以在语句中添加@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| %>
答案 0 :(得分:0)
以下是我如何做到这一点,请注意,由于我刚刚在这里打字,所以没有经过测试,但它应该为你提供一个好的起点。如果您需要更多帮助,请回复您的代码。
<%= select_tag 'client', options_from_collection_for_select(Client.all, :id, :client_name) %>
<%= select_tag "client_contacts" %>
然后你需要一些js用于ajax:
$(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