例えば、「利用規約」や「プライバシーポリシー」、ヘルプページなど、毎回サービスをリリースするときに必要になる静的ページがありますが、そういうページを作るときに、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