Я видел несколько постов о поиске по нескольким моделям (в частности, здесь и здесь ). Тем не менее, мне интересно, могу ли я адаптировать Railscast # 37 Райана, чтобы сделать это для трех или четырех моделей, не разбираясь в Thinking Sphinx, поскольку я новичок во всем этом.
Как я уже сказал, у меня есть несколько моделей, хотя для краткости ниже я приведу только две, и я сделал searches_controller
с index
и show
действиями.
На моделях я включил код модели Райана:
def self.search(search)
if search
find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
else
find(:all)
end
end
А в searches_controller
у меня есть следующее:
def index
@profiles = Profile.search(params[:search])
@employers = Employer.search(params[:search])
end
def show
@profiles = Profile.search(params[:search])
@employers = Employer.search(params[:search])
end
В моем searches/show.html.erb
есть следующее:
<%= @profiles.each do |profile| %>
<div class="question">
<div class="questionHeader">
<h5 class="questionTitle"><%= link_to profile.first_name, profile %></h5>
</div>
</div><!-- end question -->
<% end %>
<%= @employers.each do |employer| %>
<div class="question">
<div class="questionHeader">
<h5 class="questionTitle"><%= link_to employer.name, employer %></h5>
</div>
</div><!-- end question -->
<% end %>
Когда я выполняю поиск, мое шоу отображает то, что выглядит как три пустых массива [][][]
.
Не отказываясь от этого и не переходя к Thinking Sphinx, могу ли я что-нибудь сделать, чтобы заставить это работать, используя простую форму ниже?
<% form_tag searches_path, :method => 'get' do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "#", :name => nil %>
</p>
<% end %>