gemを利用せずRailsで固定ページを作成する方法

✏️️ 2019/08/13 👍️2019/08/16 🔗

Railsで固定ページを作成する方法です。gemを利用せず作成します。

Routingを作成

https://example.com/固定ページ にアクセスしたら、Pages Controllerのshow Actionを実行するようにします。

# route.rb
Rails.application.routes.draw do
  get "/:page": "pages#show"
end

Controllerを作成

固定ページ用のコントローラを作成します。

touch app/controllers/pages_controller.rb

show ActionにRoutingされたら、template ファイルをrenderします。

# app/controllers/pages_controller.rb
class PagesController < ApplicationController
  def show
    render template: "pages/#{params[:page]}"
  end
end

viewの作成

固定ページ用のviewを作成します。

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

404

templateがないparamsを受け取った場合404ページを表示するようにします。

# app/controllers/pages_controller.rb
class PagesController < ApplicationController
  before_action :valid_page!

  def show
    render "pages/#{params[:page]}"
  end

  private

  def valid_page!
    unless File.exist?(Pathname.new(Rails.root + "app/views/pages/#{params[:page]}.html.erb"))
      render file: 'public/404.html', status: :not_found
    end
  end
end

以上でRailsで固定ページを作成する方法は完了です。

Akito
日本のスタートアップで主にRuby on Railsを使ってプロダクト開発をしています。