5

静的HTML文書をレイアウト付きでRailsに提供するにはどうすればよいですか?明らかに、私はちょうどpublic/ディレクトリのHTMLファイルを保持することができますが、私はレイアウトを適用することができないだろうか?そうでなければ私はconfig/routes.rbに次のように置くことができる:それは.htmlで終わるようレイアウトファイルを含むRailsで静的HTMLを扱う

match ':page' => 'static#display', :page => /.+\.html/ 

.+\.html仕事をしていますか?

class StaticController < ApplicationController 
    layout 'static_files' 
    def display 
    render params[:page] 
    end 
end 

がERBファイルとしてRubyが不必要に試してみて、HTMLファイルを解析し、それが正常に動作すると仮定すると:とにかく、それがなかったと仮定すると、私は、コントローラを持っているだろうと思いますか? Railsはこれに対してより良いメカニズムがありますか?

+0

ファイルが '.html.erb'拡張子を持つ場合、Railsは' .html'ファイルを 'ERB'を通して解析するようです。 – knownasilya

答えて

2

Thoughtbotでhigh_voltage gemを使用できます。静的なページをRailsに含めることが目的であり、好みのテンプレート言語を使用します。内部的には、ここで提案するソリューションと同様に動作します。

READMEにhereと記載されているように、high_voltageによって処理されるすべての単一ページのレイアウトファイルをカスタマイズできます。

+0

これは今、これを試して完璧に見えます。 –

5

このtutorialには、レールの静的ページについての説明があります。

最初に、レール発電機を経由して、静的なページを生成することができます。

rails generate controller StaticPages home help --no-test-framework 

その後、あなたは次のように見えるためにあなたのconfig/routes.rbを編集することができます。

作成したあなたの StaticPagesコントローラで
SampleApp::Application.routes.draw do 
    root to: 'static_pages#home' 
    match '/help', to: 'static_pages#help' 
    . 
    . 
    . 
end 

そして最後にhomeおよびhelpの方法。

class StaticPagesController < ApplicationController 
    def home 
    end 

    def help 
    end 
end 

UPDATE - quote source: Ruby on Rails Guides - Section 2.1

あなたはRailsが「設定より規約」を促進することを聞きました。 デフォルトレンダリングはこれの優れた例です。デフォルトでは、 のコントローラは、 が有効なルートに対応する名前のビューを自動的にレンダリングします。あなたは BooksControllerクラスでこのコードを持っている場合たとえば、:

class BooksController < ApplicationController 
    #empty controller 
end 

そして、あなたのroutesファイルに次の

resources :books 

を使用すると、ビューファイルapp/views/books/index.html.erbを持っている場合は、その後、Railsの意志メソッドなしでもレンダリングします。これは、マップされたルート/同等のビューすべてに対して機能するはずです。

+3

85個の静的なhtmlページのためにページコントローラに85個のメソッドを作成したくありません。上記の例のように、私はキャッチオールルートを1つのコントローラアクションにしたいと思っています。 –

+0

答えを更新しました。試してみてください。 – knownasilya

0

ページコントローラデフォルトで

def home 
CODE 
end 

def contact 
CODE 
end 

def help 
CODE 
end 

、レール内のアクションを作成し、静的なページ

rails generate controller pages 
routes.rbを

match '/home' => 'pages#home' 
match '/help' => 'pages#help' 
match '/contact' => 'pages#contact' 
でこれらのアクションに

地図ルート

を処理するためのコントローラを作成します。ビューフォルダ内のACTION.html.erbを探します。ビューとボイルを作成します。これがあなたのために働くかどうか私に教えてください。

+1

私は、85個の静的なhtmlページのページコントローラに85個のメソッドを作成したくありません。上記の例のように、私はキャッチオールルートを1つのコントローラアクションにしたいと思っています。 –

関連する問題