1. ホーム
  2. ruby-on-rails

Ruby on Railsの静的ページ

2023-11-01 09:20:51

質問

のようなページを持つRuby on Railsアプリケーションの標準的な作り方は何でしょうか?

  • ホーム
  • について
  • 連絡先

私はこのような動作をする簡単なWebアプリケーションを作る方法を学びたいので、誰かがgemを使用すると言うだけでなく、リンクや回答を持っていたら感謝します。

どのように解決するのですか?

これらのページでコンテンツをどのように処理したいかによります。

アプローチ#1 - ビューにコンテンツを格納する

すべてのコンテンツを ERB ビューに格納したいだけなら、非常にシンプルなアプローチとして PagesController を作成し、その目的は静的なページを扱うことです。 各ページは、コントローラ内の1つのアクションによって表されます。

pages_controller.rbを参照してください。

class PagesController < ApplicationController
  def home
  end

  def about
  end

  def contact
  end
end

routes.rb:

match '/home' => 'pages#home'
match '/about' => 'pages#about'
match '/contact' => 'pages#contact'

次に app/views/pages の下に home.html.erb, about.html.erb, contact.html.erb というビューを作成します。 これらのビューには、静的ページに必要なあらゆるコンテンツが含まれます。 デフォルトでは、アプリのapplication.html.erbレイアウトを使用します。

また ページキャッシング を利用するのもよいでしょう。


アプローチ2 - コンテンツのデータベースへの格納

私が使ったもう一つのアプローチは、静的なページのための非常に基本的なCMSを作ることです。 この場合、ページはモデルで表現されます。 これは friendly_id gem を使って各ページのスラッグを処理し、IDではなくURLのきれいな名前(例:/about)で取得できるようにしています。

page.rbにあります。

class Page < ActiveRecord::Base
  attr_accessible :title, :content

  validates_presence_of :title, :content

  has_friendly_id :title, :use_slug => true, :approximate_ascii => true
end

pages_controller.rb。

class PagesController < ApplicationController
  def show
    @page = Page.find(params[:id])
    render 'shared/404', :status => 404 if @page.nil?
  end
end

show.html.erb:

<%= raw @page.content %>

routes.rb:

match '/:id' => 'pages#show'

注意:このエントリーは全てにマッチするので、routes.rbの最後に置いてください。

それから、どのようにページを作成、編集、更新したいかはあなた次第です - 管理インターフェイスを持つこともできますし、何らかの方法で公開インターフェイスに組み込むこともできます。 このアプローチはページキャッシングの恩恵を受けることもできます。