From 9c3ac19c2d5670401f9d67d9cda0a7d74348dd4a Mon Sep 17 00:00:00 2001 From: jm2dev Date: Sun, 29 Apr 2012 14:55:01 +0100 Subject: [PATCH] Very basic implemetation of search feature against default elasticsearch settings. --- Gemfile | 4 +++- app/controllers/content_controller.rb | 5 +++++ app/models/post.rb | 4 +++- app/views/content/resultspage.html.erb | 3 +++ config/initializers/elastic_searchable.rb | 5 +++++ config/routes.rb | 2 ++ 6 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 app/views/content/resultspage.html.erb create mode 100644 config/initializers/elastic_searchable.rb diff --git a/Gemfile b/Gemfile index 5b31933..f70add6 100644 --- a/Gemfile +++ b/Gemfile @@ -50,4 +50,6 @@ gem 'mysql2' gem 'rails_autolink' gem 'rdiscount' gem 'delayed_job' -gem 'delayed_job_active_record' \ No newline at end of file +gem 'delayed_job_active_record' +gem 'elastic_searchable' + diff --git a/app/controllers/content_controller.rb b/app/controllers/content_controller.rb index 7ae3d34..e3c5638 100644 --- a/app/controllers/content_controller.rb +++ b/app/controllers/content_controller.rb @@ -1,4 +1,9 @@ class ContentController < ApplicationController + + def resultspage + @posts = Post.search params[:query] + end + def frontpage @page = page_number(params[:page]) @posts = Post.find_frontpage(@page) diff --git a/app/models/post.rb b/app/models/post.rb index 02c07e3..4329727 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -10,7 +10,9 @@ class Post < ActiveRecord::Base validates :title, :length => { :maximum => 255 }, :allow_blank => false validates :text, :length => { :minimum => 2 }, :allow_blank => false - make_voteable + make_voteable + + elastic_searchable # Finds user posts with given page and standard ordering # (see Post.order_algorithm for order algorithm). diff --git a/app/views/content/resultspage.html.erb b/app/views/content/resultspage.html.erb new file mode 100644 index 0000000..0960d35 --- /dev/null +++ b/app/views/content/resultspage.html.erb @@ -0,0 +1,3 @@ +<% @posts.each do |post| %> + <%= render partial: "posts/preview", locals: { post: post } %> +<% end %> diff --git a/config/initializers/elastic_searchable.rb b/config/initializers/elastic_searchable.rb new file mode 100644 index 0000000..af0f500 --- /dev/null +++ b/config/initializers/elastic_searchable.rb @@ -0,0 +1,5 @@ +# config/initializers/elastic_searchable.rb +# (optional) customize elasticsearch host +# default is localhost:9200 +# ElasticSearchable.base_uri = 'server:9200' + diff --git a/config/routes.rb b/config/routes.rb index e00904d..2c90628 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,4 +1,6 @@ Hackful::Application.routes.draw do + match "/results/:query" => "content#resultspage" + get "admin/mail" post "admin/send_newsletter"