В настоящее время у меня есть эти 3 метода поиска в моей модели рельсов, все они одинаковы, за исключением того, какое поле они ищут (взгляните на 5-ю строку внутри каждого метода).
def self.search(*args)
return [] if args.blank?
cond_text, cond_values = [], []
args.each do |str|
next if str.blank?
cond_text << "( %s )" % str.split.map{|w| "game_name LIKE ? "}.join(" OR ")
cond_values.concat(str.split.map{|w| "%#{w}%"})
end
all :conditions => [cond_text.join(" AND "), *cond_values]
end
def self.gensearch(*args)
return [] if args.blank?
cond_text, cond_values = [], []
args.each do |str|
next if str.blank?
cond_text << "( %s )" % str.split.map{|w| "genre LIKE ? "}.join(" OR ")
cond_values.concat(str.split.map{|w| "%#{w}%"})
end
all :conditions => [cond_text.join(" AND "), *cond_values]
end
def self.consearch(*args)
return [] if args.blank?
cond_text, cond_values = [], []
args.each do |str|
next if str.blank?
cond_text << "( %s )" % str.split.map{|w| "console LIKE ? "}.join(" OR ")
cond_values.concat(str.split.map{|w| "%#{w}%"})
end
all :conditions => [cond_text.join(" AND "), *cond_values]
end
Теперь я хочу объявить эти три в контроллере, а затем отобразить их на странице приложения. Это работает для одного, но моя проблема в том, что я не знаю, какие переменные поместить куда для двух других. Я узнал первый из основного поиска. Я хотел бы сохранить их как три отдельных поиска.
В настоящее время в моем контроллере есть следующее:
@games = Game.search(params[:search])
@games = Game.gensearch(params[:search])
@games = Game.consearch(params[:search])
и следующее на мой взгляд:
<div id="sidehead"><h2><%= t('.search') %></h2></div>
<div id="searching" >
<%= form_tag games_path, :controller => 'games', :action => 'search', :method => 'get' do %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag t('.searchb'), :game_name => nil %>
<% end %>
</div>
<div style="clear: both;"/>
<div id="sidehead"><h2><%= t('.search') %></h2></div>
<div id="searching" >
<%= form_tag games_path, :controller => 'games', :action => 'gensearch', :method => 'get' do %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag t('.searchb'), :game_name => nil %>
<% end %>
</div>
<div style="clear: both;"/>
<div id="sidehead"><h2><%= t('.search') %></h2></div>
<div id="searching" >
<%= form_tag games_path, :controller => 'games', :action => 'consearch', :method => 'get' do %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag t('.searchb'), :game_name => nil %>
<% end %>
</div>
Я хочу взять последние две части (контроллер, представление) и выполнить их три раза, по одной для каждого из методов поиска, но с соответствующими переменными, любая помощь будет полезна и даст дополнительные знания.
Спасибо.