[英]How to show html in 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.