У меня есть приложение, которое реализует групповую функцию. У каждой группы есть n участников. Кроме того, каждая группа имеет свой профиль для конкретной фотографии.
Мне удалось реализовать автозаполнение для функции группы, имея в виду только название группы. Я ссылался на следующий учебник для того же: - http://railsforum.com/viewtopic.php?id=23188
Я использую ruby 1.8.7 и rails 2.0.2 для конкретных целей проекта. Я установил плагин auto_complete в соответствующую директорию. Я на Ubuntu 10.04 ОС
Я хотел бы объединить еще две вещи как часть текущей функции автозаполнения для групп
1> Когда я набираю имя группы в текстовом поле для автозаполнения, я также могу видеть соответствующее изображение профиля конкретной группы, которое отображается на основе введенного текста.
2> Я также должен иметь возможность видеть количество отображаемых членов, соответствующих каждой группе, на основе введенного текста в текстовом поле автозаполнения.
Я сталкиваюсь со следующими препятствиями, идущими примерно одинаково:
В настоящее время код, который я реализовал для получения базовых автоматических завершенных работ на основе имени группы, выглядит следующим образом: -
in groups_controller.rb
auto_complete_for :investor_group, :title
in index.html.erb из групп
<%=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"%>
in config/routes.rb
map.resources :investor_group, :collection => {:auto_complete_for_investor_groups_title => :get }
В настоящее время я могу отобразить изображение для определенной группы и получить общее количество членов, принадлежащих группе, используя следующий код в index.html.erb групп: -
<%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%>
В настоящее время выравнивание вида может быть сенообразным, но это не моя непосредственная задача. Поэтому любезно игнорируйте то же самое.
У меня есть представление о том, что мне нужно делать, и я смог написать некоторый код для этого в моем groups_controller.rb
Чтобы получить то, что мне нужно, я попробовал следующее: -
def calculate_members_count
@investor_group = InvestorGroup.find(params[:id])
@members_count = @investor_group.activated_members.size
return "@members_count", :title
end
Теперь это должно дать мне название / название группы и members_count. Я не уверен, как я могу получить изображение в том же методе.
Кроме того, из этого Если это могло бы работать правильно, я вроде как сделал некоторую работу по предположению для изменений, которые будут отражены в уже написанной функциональности автозаполнения. Я не слишком уверен, что они были бы правильными ... но здесь это идет ..
Я изменил следующее в моем index.html.erb
Search for a investor group: <%= text_field_with_auto_complete :investor_group, :calculate_members_count, {}, {:method => :get} %><%=submit_tag "Search"%>
Я изменил следующее в моем groups_controller.rb
auto_complete_for: investor_group,: Calculate_members_count
Я действительно не уверен, что я до сих пор прав, если да, то я действительно не могу понять, какие изменения мне теперь нужно отразить в rout.rb
Я также хотел спросить, нужно ли мне вносить какие-либо изменения в мою модель случайно. Я так не думаю, но просто спросил на случай.
Также я предполагаю, что если текстовое поле автозаполнения поддерживает поиск по запросу только по одному атрибуту, то в этом случае мне нужно было бы определить настраиваемый поиск автозаполнения в соответствии с моими требованиями? Если да, я действительно понятия не имею, как начать, и как это сделать. Возможно, я только сейчас, что для этого также понадобился бы специальный javascript.
Пожалуйста, помогите мне в этом. Любые входы по этому вопросу были бы очень полезны ..
Спасибо за чтение и время для вашего пациента.
Question Edited
Я просто хотел сказать, что я новичок в Rails и у меня едва ли 2,5 месяца опыта.
После долгих поисков я понял, что для реализации функции автозаполнения для более чем одного поля мне нужно будет использовать настроенный метод автозаполнения.
Я обратился к следующему руководству, чтобы настроить настраиваемое автоматическое завершение работы для меня: - http://cobaltedge.com/auto-complete-text-fields-in-rails-2
Мой метод автоматического завершения выглядит следующим образом: -
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
My index.html.erb для автоматической настройки настроенного метода выглядит следующим образом: -
<% form_tag ({: action =>: search}) do%> Поиск группы инвесторов: <% = text_field_with_auto_complete: investor_group,: title,: autocomplete => "off"%> <% = submit_tag "Поиск"%> <% end%>
Соответствующие изменения, внесенные в rout.rb , выглядят так: -
map.auto_complete ':controller/:action', :requirements => { :action => /auto_complete_for_\S+/ }, :conditions => { :method => :get }
Этот код хорошо работает для извлечения группыназвание, когда оно ищется.Я хочу изменить этот код, чтобы он также получал изображение, специфичное для профиля группы, и общее количество членов, принадлежащих группе.
Загруженное изображение имеет тип file_field
и имеет атрибут :uploaded_data
.
Мне также нужно получить общее количество членов группы.В настоящее время изображение и общее количество членов, принадлежащих группе, отображается через index.html.erb отдельно, используя следующий код: -
<%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.. )
Я также выяснил, что размер группы может бытьчто-то вроде того, как его извлекли в groups_controller, используя такой код: -
@investor_group = InvestorGroup.find(params[:id])
@members = @investor_group.activated_members.size
Я действительно не уверен, как изменить этот код для метода auto_complete_for_investor_group_title.
активированные члены принимаются заассоциация из следующей модели investor_group.rb
has_many :activated_members, :through => :investor_group_members, :source => :investor, :conditions => "activated is true"
Используя приведенную выше информацию, я не могу понять, как я могу добавить общего числа участников, принадлежащих группе и профилю конкретной группы pic к уже существующей функции автозаполнения, которая работает для заголовка.
Можете ли вы помочь мне с тем же.
Большое спасибо.