例えば、「利用規約」や「プライバシーポリシー」、ヘルプページなど、毎回サービスをリリースするときに必要になる静的ページがありますが、そういうページを作るときに、Rails の controller や routes をいじるのが面倒。
Middleman はファイルを置けば静的ページが作られるってところが便利で、Rails でもそういう機能が欲しいって思うときがあります。
その機能を実現するのが thoughtbot が作った「high_voltage」っていう Gem。thoughtbot は他にも bourbon や paperclip 、factory_girl など、デザイナでもよく聞く有名な Gem を作ってる会社。
high_voltage のインストール
まずは Rails アプリの Gemfile に、
1 | gem 'high_voltage' |
を追加して、
1 | $ bundle |
コマンドを打ちます。
これで high_voltage が使えるようになりました。
注意
pages という controller をすでに使ってる場合、high_voltage は使えないです。
ページの作成
app/views のディレクトリの中に pages というディレクトリを作ります。
コマンドラインで作る場合はこう。
1 | $ mkdir app/views/pages |
で、試しに about ってページを作ってみましょう。
app/views/pages/ のディレクトリの中に about.html.erb(もしくは、about.html.haml、about.html.slim など)を作ります。
コマンドラインで作る場合はこう。
1 | $ touch app/views/pages/about.html.erb |
適当に about.html.erb (もしくは、about.html.haml、about.html.slim など)に何か書いておきます。

作成したページの確認
Rails を立ちあげて、
1 | $ rails s |
作成したページにアクセス(http://localhost:3000/pages/about)。
確認できました。

作成したページへリンクを貼る
作成したページのパスは page_path('about') となります。なのでリンクは、
erb
1 | <%= link_to 'about', page_path('about') %>
|
haml、slim
1 | = link_to 'about', page_path('about')
|
と、書きます。
作成したページの URL から /pages を削除
今のままだと http://localhost:3000/pages/about という URL になってますが、この pages がいらない! http://localhost:3000/about がいい、ってこともあります。
その場合、config/initializers/ ディレクトリの中に high_voltage.rb というファイルを作成して、そこに
1 2 3 | HighVoltage.configure do |config| config.route_drawer = HighVoltage::RouteDrawers::Root end |
と、書きます。
それから Rails を再起動すると、http://localhost:3000/about に URL が変わります。
URL が変わっても、パスの書き方は page_path('about') のまま。
階層を作る
例えば、http://localhost:3000/help/post や、http://localhost:3000/help/read のような階層を作る場合、静的ページを入れている app/views/pages/ の中に help ディレクトリを作って、その中に post.html.erb(もしくは、post.html.haml、post.html.slim など)、 read.html.erb(もしくは、read.html.haml、read.html.slim など)を入れます。
すると、http://localhost:3000/help/post 、http://localhost:3000/help/read にアクセスできるようになります。
リンクを貼るときのパスの書き方は page_path('help/post') 、 page_path('help/read') となります。
K&Bパブリッシャーズ
売り上げランキング: 303,534
