我正在使用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
,因为{{1}}不存在。
知道如何让这个工作吗?
答案 0 :(得分:0)
也许不是最漂亮的解决方案,但我也没有找到一个mobylette支持的方式来做到这一点。 我使用了类似的方法,但是在你的before_filter中不能使用'request.format',我不得不使用'request.filtered_parameters [“format”]'。 还在寻找漂亮的版本。
答案 1 :(得分:0)
index.js.erb
改为
index.erb