Implementación de autocompletar para más de un campo en Rails
Tengo una aplicación que implementa una función de grupo. Cada grupo tiene n miembros. Además, cada grupo tiene una foto de perfil específica del grupo.
He podido implementar el autocompletado para la función de grupo teniendo en cuenta solo el nombre del grupo. Me he referido al siguiente tutorial para el mismo: -http: //railsforum.com/viewtopic.php? id = 23188
Estoy usandoruby 1.8.7 yrails 2.0.2 para fines específicos del proyecto. He instalado el complemento auto_complete en el directorio apropiado. Estoy enUbuntu 10.04 OS
Me gustaría integrar dos cosas más como parte de la función de autocompletar actual para grupos
1> Cuando escribo el nombre de un grupo en el campo de texto de autocompletado, debería poder ver también una imagen de perfil específica de grupo apropiada que aparece en función del texto ingresado.
2> También debería poder ver la cantidad de miembros que aparecerían correspondientes a cada grupo, según el texto ingresado en el campo de texto de autocompletar.
Me enfrento a los siguientes obstáculos que son casi iguales:
Actualmente, el código que he implementado para obtener trabajos de autocompletado básicos basados en el nombre del grupo se ve así: -
in groups_controller.rb
auto_complete_for :investor_group, :title
in index.html.erb de grupos
<%=stylesheet_link_tag "groups"%>
<%= javascript_include_tag :defaults %>
Search for a investor group: <%= text_field_with_auto_complete :investor_group, :title, {}, {:method => :get} %><%=submit_tag "Search"%>
inconfig/routes.rb
map.resources :investor_group, :collection => {:auto_complete_for_investor_groups_title => :get }
Actualmente puedo mostrar una imagen para un grupo en particular y recuperar el número total de miembros que pertenecen a un grupo haciendo uso del siguiente código en index.html.erb de grupos: -
<%for inv_group in @investor_groups%>
<div class="inv_group_img" align="center"><%=image_tag "investor_groups/#{inv_group.title}.jpg"%></div>
<div class="inv_group_details">
<%=inv_group.activated_members.size%><br>
<%end%>
La alineación de la vista puede ser cable de heno actualmente, pero ese no es mi enfoque inmediato. Por lo tanto, amablemente, ignore lo mismo.
Tengo una idea de lo que necesito hacer y he podido escribir un código para el mismo en my groups_controller.rb
Para obtener lo que necesito, probé lo siguiente: -
def calculate_members_count
@investor_group = InvestorGroup.find(params[:id])
@members_count = @investor_group.activated_members.size
return "@members_count", :title
end
Ahora esto debería darme el título / nombre del grupo y la cuenta de miembros. No estoy seguro de cómo podría obtener la imagen también con el mismo método.
Además, a partir de esto Si pudiera funcionar correctamente, he hecho algunas conjeturas para que los cambios se reflejen en la funcionalidad de autocompletar ya escrita. No estoy muy seguro de si serían correctos ... pero aquí va ...
Cambié lo siguiente en mi index.html.erb
Search for a investor group: <%= text_field_with_auto_complete :investor_group, :calculate_members_count, {}, {:method => :get} %><%=submit_tag "Search"%>
Cambié lo siguiente en mi groups_controller.rb auto_complete_for: investor_group,: Calculate_members_count
Realmente no estoy seguro de si estoy en lo correcto hasta aquí, si es así, realmente no puedo entender qué cambio ahora necesitaría reflejar en routes.rb
También quería preguntar, ¿necesito hacer algunos cambios en mi modelo por casualidad? No lo creo, pero solo pregunté por si acaso.
Además, supongo que si el campo de texto de autocompletar admite la búsqueda de consultas para un solo atributo, en este caso, ¿tendría que definir una búsqueda de autocompletar personalizada para satisfacer mis necesidades? En caso afirmativo, realmente no tengo idea de cómo adelantarme y cómo hacerlo. Es posible que ahora también necesite un JavaScript personalizado para esto.
Amablemente ayúdame en esto. Cualquier entrada sobre esto sería realmente útil ..
Gracias por la lectura y el tiempo de tu paciente ..
Question Edited
olo quería mencionar que soy un novato en Rails y apenas tengo 2,5 meses de experienci
Después de mucha búsqueda, me di cuenta de que para implementar la función de autocompletar para más de un campo, tendría que usar un método de autocompletar personalizado.
Me he referido al siguiente tutorial para que el autocompletado personalizado funcione para mí: -http: //cobaltedge.com/auto-complete-text-fields-in-rails-
Mi método de autocompletar personalizado se ve así: -
def auto_complete_for_investor_group_title
re = Regexp.new("^#{params[:investor_group][:title]}", "i")
#re1 = Regexp.new("^#{params[:investor_group][:title].jpg}", "i")
find_options = { :order => "title ASC", :conditions => ['title LIKE ?', "%#{params[:title]}%"] }
@investor_group = InvestorGroup.find(:all, find_options).collect(&:title).select { |title| title.match re }
render :inline => "<%= content_tag(:ul, @investor_group.map { |title| content_tag(:li, h(title)) }) %>"
end
Mi index.html.erb para que el método personalizado de autocompletar funcione funcione así: -
<% form_tag ({: action =>: search}) do%> Buscar un grupo de inversores: <% = text_field_with_auto_complete: investor_group,: title,: autocomplete => "off"%> <% = submit_tag "Search"% > <% end%>
Los cambios apropiados realizados en routes.rb se parece a esto:
map.auto_complete ':controller/:action', :requirements => { :action => /auto_complete_for_\S+/ }, :conditions => { :method => :get }
Este código funciona bien para recuperar el título del grupo cuando se busca. Quiero modificar este código para obtener también una imagen específica del perfil del grupo y el número total de miembros que pertenecen a un grupo.
La imagen que se carga es del tipofile_field
y tiene el atributo llamado:uploaded_data
.
También necesito obtener el número total de miembros que pertenecen a un grupo. Actualmente, la imagen y el número total de miembros que pertenecen a un grupo se muestran a través de index.html.erb por separado utilizando el siguiente código: -
<%for inv_group in @investor_groups%>
<div class="inv_group contentTableGray">
<div class="inv_group_img" align="center"><%=image_tag "investor_groups/#{inv_group.title}.jpg"%></div>
<div class="inv_group_details">
<span style="float:right;padding-right: 10px;"><%=show_edit_link_for_group(inv_group)%></span>
<%=link_to inv_group.title, :action => :show, :id => inv_group%>
<div style="clear:both;"></div>
<%=truncate(inv_group.description,100)%>
</div>
<div class="inv_group_details" style="width:14%;text-align: center;">
<%=inv_group.activated_members.size%><br>
....( code continues further.. )
También he descubierto que el tamaño de un grupo puede ser algo así como obtenido en el control_de_grupos usando un código como este: -
@investor_group = InvestorGroup.find(params[:id])
@members = @investor_group.activated_members.size
Realmente no estoy seguro de cómo modificar este código para el método auto_complete_for_investor_group_title.
activated members se toma como una asociación del siguiente modelo investor_group.rb
has_many :activated_members, :through => :investor_group_members, :source => :investor, :conditions => "activated is true"
Utilizando la información anterior, no puedo entender cómo puedo agregartotal miembros que pertenecen a un grupo y una foto de perfil específica del grupo a la función de autocompletar ya existente que funciona para el título.
¿Puedes ayudarme con lo mismo?
Muchas gracias