スマホ向けにテンプレ分けたいわーというニーズ向け
環境
rails (5.0.2)
Action Pack Variants とは
Ruby on Rails 4.1 リリースノート - Railsガイド
ざっと説明すると request.variant
にシンボル値をセットすることで、そのシンボル値が付加されているviewファイルを利用するようになる、というもの。
例
たとえば、パラメータを見てPCサイトとスマホサイトでViewの表示を変えたい場合は以下のようなことをする。
今回は app/controllers/articles_controller.rb
というファイルを例に取る(routes.rbの記述は割愛)
class ArticlesController < ApplicationController def index request.variant = :sp if params[:type] == "smart_phone" render end end
そして、variantに設定する値に準ずるviewを用意する。通常であれば…
app/views/articles/index.html.erb
というControllerに対するViewを用意すればいいが、variant用の sp
に対応するviewを用意するので
app/views/articles/index.html.erb app/views/articles/index.html+sp.erb
とすることで
http://example.com/articles
のようにアクセスするとapp/views/articles/index.html.erb
のほうが表示される。http://example.com/articles?type=smart_phone
のようにアクセスするとapp/views/articles/index.html+sp.erb
のほうが表示される。
という挙動になる。