deviseとmobyletteでNo renderer defined for format: mobileになる
mobyletteのmobileとのviewファイルの切り替え方法が、MIME typeを変えるという非常にワイルドな方法なために、deviseでのrespond_with()で mobile なんてフォーマットのrendererねえよって言われてしまう。
これは、Railsのrenderを担当してるControllerに変更を加えることで解決する。
Railsのアプリが立ち上がったときに、to_mobile
にto_html
メソッドのaliasを貼るようにします。僕は config/initializers/mobile_responder.rb
ってファイルを作成しました。
ActionController::Responder.class_eval do alias :to_mobile :to_html end
そしたら、deviseの方で :mobile
なMIME Typeに対応できるように設定しておきます。
# config/initializers/devise.rb config.navigational_formats = [:"*/*", "*/*", :html, :mobile]
オープンクラスは使ってるわけだし若干モンキーパッチな感じで汚すのでよいわけではないと思う。