我使用 mobylette
宝石管理 :mobile
格式视图。
我有一个控制器, 使一个 javascript 文件 (/ app/views/ photos/index.js.erb
) 。
class Photos < ApplicationController
respond_to :js
def index
...
end
end
如果我从桌面访问 /photos
或 /photos.js
或 /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/ reminizers/mime_ types.rb
中插入此内容。
Mime::Type.register_alias "text/html", :mobile
Mime::Type.register_alias "text/javascript", :mobilejs
出于某种原因,当 [:mobile]
格式应该改为 :js
(因为 :moblesjs
不存在) 时, 格式仍然在创建中。
知道该怎么工作吗?