質問: スマホからアクセスした時にスマホ用にビューを切り替えたいのですが、やり方がわかりません。 `post/edit.html.erb` ↓ `post/sp_edit.html.erb` このように接頭語を付与する形が理想です。 スマホ用のビューがなかったら通常のビューファイルを使うということができれば完璧です。 どこにどのように記述するのがよろしいでしょうか。
回答: 1. ActionPack Variantsを使う Controllerのbefore_actionでrequest.variantをセットしてください。 メリット:RoRのフレームワーク機能なので導入で揉めることが少ないです。 デメリット:ファイル名規則が綺麗とはいえません。それから階層的な探索する(ファイルが無ければより大枠での別viewを探す)ことも後述のjpmobileと比べて細かくありません。 2. jpmobileを使う Controllerにinclude Jpmobile::ViewSelectorをセットしてください。 メリット:gemの中で勝手にやってくれるので分岐意識が不要になります。 デメリット:sp_edit.html.erbという命名規則が実現できないぐらいです。 3. 自分でラッパーなりを書く 1つ1つヘルパーなり何なりをシコシコと書くしかないので割愛します。 メリット:sp_edit.html.erbの命名規則は間違いなく担保できる デメリット:partialみたいに明示的に書くならいいのでしょうが。controllerのrenderみたいに省略されている場合などもアレコレと各必要があって、私は保守の観点からお勧めできません。 個人的には「スマホ用のビューがなかったら通常のビューファイルを使うということができれば完璧」という点を考えてもjpmobileの使用をオススメします。 jpmobileが採用しにくい理由があれば。それを質問文に追記してください。