Commit 80120100 by Tan Phat Nguyen

refactor search function, add service Searcher

parent f8adf8bb
class ProductsController < ApplicationController
PAGINATE_PER = 10
def show
@product = Product.find(params[:id])
end
def index
solr = RSolr.connect url: Rails.configuration.solr_host.to_s
response = solr.paginate params[:page].to_i - 1, PAGINATE_PER, "select", params: { q: params[:search], wt: 'ruby' }
@products = response['response']['docs']
@products_paging = Kaminari.paginate_array(@products, total_count: response['response']['numFound']).page(params[:page]).per(PAGINATE_PER)
search_products = Searcher.find_products_by(search: params[:search], page: params[:page])
@products = search_products['docs']
@products_paging = Kaminari.paginate_array(search_products['docs'], total_count: search_products['numFound']).page(params[:page]).per(Rails.configuration.paginates_per)
flash.now[:warning] = 'No results.' unless @products.any?
end
end
class Searcher
def self.find_products_by(params = {})
solr = RSolr.connect url: Rails.configuration.solr_host.to_s
response = solr.paginate params[:page], Rails.configuration.paginates_per, "select", params: { q: params[:search], wt: 'ruby' }
response['response']
end
end
<%= form_tag products_path, method: 'get', class: 'navbar-form navbar-right' do %>
<%= text_field_tag :search, params[:search], placeholder: 'Search...', class: 'form-control' %>
<% end %>
......@@ -24,10 +24,7 @@
<% end %>
<li style='width: 36px'><%= link_to '', cart_path(current_cart), class: 'nav-icon' %></li>
</ul>
<%= form_tag products_path, method: 'get', class: 'navbar-form navbar-right' do %>
<%= text_field_tag :search, params[:search], placeholder: 'Search...', class: 'form-control' %>
<% end %>
<%= render 'form_search' %>
</div>
</div>
</nav>
<nav class='navbar navbar-inverse navbar-fixed-top'>
<div class='container-fluid'>
<div class='navbar-header'>
<%= link_to 'VenShop Apps', root_path, class: 'navbar-brand' %>
</div>
<div id='navbar' class='navbar-collapse collapse'>
<ul class='nav navbar-nav navbar-right'>
<li><%= link_to 'Home', root_path %></li>
<% if user_signed_in? %>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
Account <b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><%= link_to "Order History", '#' %></li>
<li><%= link_to "Settings", edit_user_registration_path %></li>
<li class="divider"></li>
<li><%= link_to "Log out", destroy_user_session_path, method: "delete" %></li>
</ul>
</li>
<% else %>
<li><%= link_to 'Log in', new_user_session_path %></li>
<li><%= link_to 'Register', new_user_registration_path %></li>
<% end %>
<li style='width: 36px'><%= link_to '', cart_path(current_cart), class: 'nav-icon' %></li>
</ul>
<form class='navbar-form navbar-right'>
<input type='text' class='form-control' placeholder='Search...'>
</form>
</div>
</div>
</nav>
\ No newline at end of file
......@@ -10,6 +10,7 @@
<%= render 'header' %>
<div class='container-fluid'>
<div class='row'>
<div class='col-sm-3 col-md-2 sidebar'>
<ul class='nav nav-sidebar'>
......
......@@ -48,4 +48,6 @@ Rails.application.configure do
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
config.solr_host = "http://localhost:8983/solr/collection1"
config.paginates_per = 10
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment