- Controllerは空っぽでViewだけ作ればよかった。
- config/routes.rbは1行で済んだ。
- Viewはキャッシュされるので更新時は再起動する。
app/controllers/pages_controller.rbを作成
class PagesController < ApplicationController # app/view/pages/*.html.erbだけ作る。 end
静的ページを扱うためのPagesコントローラーを作成しました。 初めはアクセスされたURLに対応するHTMLファイルをリードするアクションを作ろうとしていたのですが、そんな必要はありませんでした。
config/routes.rbを編集
Ubichupas::Application.routes.draw do get "/page/:action" => "pages#:action" end
ここの書き方が肝要。 「:action」と書いた箇所をアクション名に対応付けられます。 他にも「:id」とか覚えると好きなURLを作れるようになります。
app/views/layouts/pages.html.erbを作成
<!DOCTYPE html> <html> <head> <title>サイト名</title> <%= stylesheet_link_tag :all %> <%= javascript_include_tag :defaults %> <%= csrf_meta_tag %>
</head> <body> <%= yield %> <%= render 'layouts/footer' %> </body> </html>
静的ページ用のレイアウトを作りました。 部分テンプレートはrenderのところに「'footer'」とだけ書くとapp/views/pages/_footer.html.erbが使用され、「'layouts/footer'」と書くとapp/views/layouts/_footer.html.erbが使用されるようです。
app/views/pages/welcome.html.erbを作成
<h1>こんにちわ</h1> このページのURLはこうなります。<br/> http://localhost:3000/page/welcome.html
後は目的のページを量産するだけです。 いちいちアクションを書かかずにビューだけ作れば済むのは楽ですね。
ようやくRails3のレシピブックが発売されました。 もっと早くこれがあれば悩むことも少なかったでしょうに・・・
1 件のコメント:
1点だけ;
---
Caopass::Application.routes.draw do
get "/page/:action" => "pages#:action"
---
は、
---
Caopass::Application.routes.draw do
get "/pages/:action" => "pages#:action"
---
では?