ひーろのアウトプットブログ

プログラミングの学習記録と開発日記です

high_voltageを使用して簡単に静的ページを作成する

静的なページを作成する時にそれぞれcontrollerを作るか検討していたら、high_voltageというgemを見つけました。
controllerやroutesを設定しなくともapp/view/pages以下のファイルを表示できるようになるというものです。

前提

ruby: 2.6.6
rails: 6.0.3.5

導入

まずはgemをinstallします。

gem 'high_voltage'
bundle install

次に、pagesディレクトリを作成します。

mkdir app/view/pages

これでhigh_voltageを使う準備ができました。
簡単ですね。

使用方法

試しに利用規約のページを作ってみます。 app/view/pagesterms.html.slimというファイルを作成します。

touch app/view/pages/terms.html.slim

サーバーを立ち上げ、http://localhost:3000/pages/termsへアクセスすると、空のページが表示されます。
先ほどのファイルに記述をして再度アクセスしたら表示が確認出来るかと思います。

パス

ページのパスは、page_path('*')となります。
今回はtermsなのでpage_path('terms')と指定してあげればリンクが作れます。

= link_to '利用規約', page_path('terms')

こんな感じで使うことができます。

URLのpagesを表示しないようにする

high_voltageで生成したページにはpagesというURLが含まれてしまいますが、設定で消すことができます。
config/initializershigh_voltage.rbという設定ファイルを作成します。 そこへ次のように記述をします。

HighVoltage.configure do |config|
  config.route_drawer = HighVoltage::RouteDrawers::Root
end

一度サーバーを再起動したら、URLが変更されています。
http://localhost:3000/pages/termsは使えなくなり、http://localhost:3000/termsにアクセスすることで表示されます。
パスは変わらずpage_path('terms')を使います。

参考

https://github.com/thoughtbot/high_voltage