我正在使用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
不存在)。
知道如何让它工作吗?