フォーマット ビューのmobylette
管理に gem を使用しています。:mobile
これを除いて正常に動作しているようです:
JavaScript ファイル ( ) をレンダリングするコントローラーがあります/app/views/photos/index.js.erb
。
class Photos < ApplicationController
respond_to :js
def index
...
end
end
デスクトップからアクセスすると、/photos
または正常に/photos.js
動作しているように見えますが (.js 出力が表示されます)、モバイル デバイスからアクセスすると、次のエラーが表示されます。
Template is Missing
Missing template photos/index, application/index with locale {:locale => [:en], :formats => [:mobile], :handlers => [:erg,:coffee,:haml]}. Searched in: *"/Users/user/site/app/views" * "/Users/user/.rvm/gems/ruby-1.9.2-p290/gems/devise-1.5.2/app/views" * "/Users/user/site/app/views"
私は次のコードを持っていますapplication_controller.rb
before_filter :set_request_format, :set_format_fallbacks
def set_request_format
if is_mobile_request? && request.format.to_s == "text/html"
request.format = :mobile
elsif is_mobile_request? && request.format.to_s == "text/javascript"
request.format = :mobilejs
end
end
def set_format_fallbacks
if request.format == :mobile
self.formats = [:mobile, :html]
elsif request.format == :mobilejs
self.formats = [:mobilejs, :js]
end
end
そしてこれで/config/initializers/mime_types.rb
Mime::Type.register_alias "text/html", :mobile
Mime::Type.register_alias "text/javascript", :mobilejs
なんらかの理由で、代わり[:mobile]
にレンダリングする必要があるときに、フォーマットがまだレンダリングされています(存在しないため)。:js
:mobilesjs
これを機能させる方法はありますか?