- 更新日: 2014年11月11日
- Rails
Railsで適用するレイアウトを変更する
Rails の共通レイアウト用に使用されるビューファイルは、デフォルトでは views/layouts/application.html.erb になっています。特定の画面では、application.html.erb 以外のレイアウトを適用したいケースもあるのでその変更方法。昨日の Railsでビューにapplicaiton.html.erbのレイアウトを適用しない に関連するエントリーです。
— 環境 —
Rails 4.1
views/layouts/ 以下にレイアウト用ビューを追加
まず、views/layouts/application.html.erb 以外のレイアウト用ファイルを、views/layouts 以下に作成します。今回の例では、another_layout.html.erb を追加しました。
views/layouts/another_layout.html.erb
1 2 3 4 5 6 7 8 |
<!DOCTYPE html> <html> <head> </head> <body> <%= yield %> </body> </html> |
yield の部分が、各ビューファイルの中身となります。これ書き忘れがちなので注意。
コントローラーのアクションでレイアウトを指定
コントローラーのアクション内で、使用するレイアウトを指定します。今回の場合は、views/layouts/another_layout.html.erb を指定。拡張子を除外したファイル名のみで指定します。
1 2 3 4 5 6 7 8 9 |
class SomeController < ApplicationController # ... def another_layout_action render layout: 'another_layout' end # ... end |
他のアクションのビューを流用しつつレイアウトを指定
other_action アクションのビューを使用しつつ、レイアウトに another_layout.html.erb を指定する例です。
1 2 3 4 5 6 7 8 9 |
class SomeController < ApplicationController # ... def no_layout_action render :action => 'other_action', :layout => 'another_layout' end # ... end |
最初各々を別々にして、render を2行に分けて書いていたらエラーで怒られました。アクション内では、render メソッドは1回しか呼べないらしい。ということで、render メソッドにハッシュ形式の引数を渡します。これでOK。
- Rails の関連記事
- RailsでMySQLパーティショニングのマイグレーション
- Rails ActiveRecordでdatetime型カラムのGROUP BY集計にタイムゾーンを考慮する
- RailsプラグインGemの作成方法、RSpecテストまで含めたrails pluginの作り方
- RailsでAMPに対応するgemをリリースしました
- Railsでrequest.urlとrequest.original_urlの違い
- Railsでwheneverによるcronバッチ処理
- Google AnalyticsのRails Turbolinks対応
- Railsアプリにソーシャル・シェアボタンを簡単設置
- Rails監視ツール用にErrbitをHerokuで運用
- Facebook APIバージョンのアップグレード手順(Rails OmniAuth)
Leave Your Message!