Skip to content

Instantly share code, notes, and snippets.

@rbarazi
rbarazi / application.html.erb
Created April 11, 2010 15:48
[Beginning Rails 3] Listing 12-13. Update to app/views/layouts/application.html.erb
<!DOCTYPE html>
<html>
<head>
<title>Blog</title>
<%= stylesheet_link_tag :all %>
<%= javascript_include_tag 'jquery-1.4.2.min', 'rails', 'application' %>
<%= csrf_meta_tag %>
</head>
<body>
<div id="header">
@rbarazi
rbarazi / _search.html.erb
Created April 11, 2010 15:47
[Beginning Rails 3] Listing 12-12. The app/views/articles/_search.html.erb File
<%= form_tag search_articles_path, :method => :get do %>
<p>
Search
<%= text_field_tag :keyword, params[:keyword] %>
</p>
<% end %>
@rbarazi
rbarazi / routes.rb
Created April 11, 2010 15:46
[Beginning Rails 3] Listing 12-11. Updating routes in config/routes.rb
Blog::Application.routes.draw do
root :to => "articles#index"
resources :articles do
member do
post :notify_friend
end
collection do
get :search
end
resources :comments
@rbarazi
rbarazi / articles_controller.rb
Created April 11, 2010 15:45
[Beginning Rails 3] Listing 12-10. Addition to ArticlesController in app/controllers/articles_controller.rb
class ArticlesController < ApplicationController
before_filter :authenticate, :except => [:index, :show, :notify_friend, :search]
def search
@articles = Article.search(params[:keyword])
render :action => 'index'
end
# GET /articles
# GET /articles.xml
@rbarazi
rbarazi / simple_search_test.rb
Created April 11, 2010 15:44
[Beginning Rails 3] Listing 12-9. Create properties table and define its model in vendor/plugins/simple_search/test/simple_search_test.rb
require 'test_helper'
$stdout = StringIO.new
def create_properties_table
ActiveRecord::Schema.define(:version => 1) do
create_table :properties do |t|
t.column :name, :string
t.column :description, :text
end
@rbarazi
rbarazi / simple_search_test.rb
Created April 11, 2010 15:43
[Beginning Rails 3] Listing 12-8. Updating simple search test in vendor/plugins/simple_search/test/simple_search_test.rb
require 'test_helper'
class SimpleSearchTest < ActiveSupport::TestCase
test "search method is available" do
assert Article.respond_to?(:search)
end
test "should search" do
assert_equal 1, Article.search("framework").size
assert_equal 0, Article.search("unknown").size
@rbarazi
rbarazi / article.rb
Created April 11, 2010 15:43
[Beginning Rails 3] Listing 12-7. Adding simple search to Article in app/models/article.rb
class Article < ActiveRecord::Base
validates :title, :presence => true
validates :body, :presence => true
belongs_to :user
has_and_belongs_to_many :categories
has_many :comments
acts_as_taggable
simple_search :title, :body
@rbarazi
rbarazi / init.rb
Created April 11, 2010 15:42
[Beginning Rails 3] Listing 12-6. Updates to vendor/plugins/simply_searchable/init.rb
require 'active_record'
require 'simple_search'
ActiveRecord::Base.send(:extend, BeginningRails::SimpleSearch)
@rbarazi
rbarazi / simple_search.rb
Created April 11, 2010 15:41
[Beginning Rails 3] Listing 12-5. Complete SimpleSearch plug-in in vendor/plugins/simple_search/lib/simple_search.rb
module BeginningRails
module SimpleSearch
def simple_search(*fields)
class_inheritable_accessor :searchable_fields
raise "Please specify the fields to search on" if fields.empty?
self.searchable_fields = fields
end
def search(value)
@rbarazi
rbarazi / _article.html.erb
Created April 11, 2010 15:41
[Beginning Rails 3] Listing 12-4. Showing tags in the article partial, app/views/articles/_article.html.erb
<%= div_for article do %>
<h3>
<%= link_to article.title, article %>
<% if article.owned_by? current_user %>
<span class='actions'>
<%= link_to t('general.edit'), edit_article_path(article) %>
<%= link_to t('general.delete'), article, :confirm => t('general.are_you_sure'), :method => :delete %>
</span>
<% end %>
</h3>