Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Easily include static pages in your Rails app.
Ruby HTML

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
app/controllers/high_voltage
config Updating with latest routing/deprecation fixes
lib Rails 3 support
test Raise a routing error for missing pages so that Rails will use public…
.gitignore
MIT-LICENSE
README.markdown
Rakefile
high_voltage.gemspec
init.rb
install.rb sub (not gsub) in case of multiple matches

README.markdown

High Voltage

Rails engine for static pages.

... but be careful. Danger!

Static pages?

Yeah, like "About us", "Directions", marketing pages, etc.

Installation

$ gem install high_voltage

Usage

Write your static pages and put them in the RAILS_ROOT/app/views/pages directory.

mkdir app/views/pages
touch app/views/pages/about.html.erb

After putting something interesting there, you can link to it from anywhere in your app with:

link_to "About", page_path("about")

Bam.

Routes

By default, the static page routes will be like /pages/:id (where :id is the view filename).

If you want to route to a static page in another location (for example, a homepage), do this:

map.root :controller => 'pages', :action => 'show', :id => 'home'

In that case, you'd need an app/views/pages/home.html.erb file.

Generally speaking, you need to route to the 'show' action with an :id param of the view filename.

You'll notice in your config/routes.rb file that the High Voltage routes are generated by:

HighVoltage::Routes.draw(map)

Override

Most common reasons to override? Authentication, layouts.

Create a PagesController of your own:

script/generate controller pages

Then modify it to subclass from High Voltage, adding whatever you need:

class PagesController < HighVoltage::PagesController
  before_filter :authenticate
  layout "danger"
end

Testing

Just a suggestion, but you can test your pages using Shoulda pretty easily:

class PagesControllerTest < ActionController::TestCase
  tests PagesController

  %w(earn_money screencast about contact).each do |page|
    context "on GET to /pages/#{page}" do
      setup { get :show, :id => page }

      should_respond_with :success
      should_render_template page
    end
  end
end

If you're not using a custom PagesController be sure to test HighVoltage::PagesController instead.

Enjoy!

License

Copyright (c) thoughtbot, inc -- released under the MIT license.

Something went wrong with that request. Please try again.