5

Railsでレイアウトを使用して静的HTMLドキュメントを提供する最良の方法は何ですか? 明らかに、HTML ファイルをpublic/ディレクトリに保持することはできますが、レイアウトを適用することはできませんか? それ以外の場合は、次を に入れることができますconfig/routes.rb

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

.+\.htmlで終わるので動作し.htmlますか?とにかく、それがあったと仮定すると、私はコントローラーを持っていると思います:

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

それが適切に動作すると仮定すると、Ruby は不必要に HTML ファイルを ERB ファイルとして解析しようとしますか? Railsがこれに備えているより良いメカニズムはありますか?

4

4 に答える 4

5

このチュートリアルには、レールの静的ページのかなり良い説明があります。

まず、Rails ジェネレーターを使用して静的ページを生成できます。

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

config/routes.rb次に、次のように編集できます。

SampleApp::Application.routes.draw do
  root to: 'static_pages#home'
  match '/help',    to: 'static_pages#help'
  .
  .
  .
end

最後に、StaticPagesコントローラーでhomeandhelpメソッドを作成します。

class StaticPagesController < ApplicationController
  def home
  end

  def help
  end
end

更新- 引用元: Ruby on Rails ガイド - セクション 2.1

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

class BooksController < ApplicationController 
  #empty controller
end 

そして、routes ファイルに次のように記述します。

resources :books 

また、ビュー ファイルがあればapp/views/books/index.html.erb、Rails はメソッドがなくてもそれをレンダリングします。これは、マップされたルート/同等のビューで機能するはずです。

于 2012-09-26T18:59:58.087 に答える
2

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

ここの Readme で説明されているように、high_voltage によって提供されるすべてのページのレイアウト ファイルをカスタマイズできます。

于 2012-09-27T19:00:37.977 に答える
0

静的ページを処理するコントローラーを作成する

rails generate controller pages

routes.rb でこれらのアクションにルートをマップします

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

ページコントローラーでアクションを作成する

def home
CODE
end

def contact
CODE
end

def help
CODE
end

デフォルトでは、Rails はビュー フォルダーで ACTION.html.erb を探します。ビューを作成して出来上がり。これがうまくいくかどうか教えてください。

于 2012-09-27T05:02:55.200 に答える