0

我正在使用mobylettegem 来管理: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不存在)。

知道如何让它工作吗?

4

2 回答 2

0

也许不是最漂亮的解决方案,但我也没有找到支持 mobylette 的方法来做到这一点。我使用了类似的方式,但无法在您的 before_filter 中使用 'request.format',我不得不使用 'request.filtered_pa​​rameters["format"]' 代替。还在寻找漂亮的版本。

于 2013-02-15T16:01:20.587 回答
0
index.js.erb

它变为

index.erb
于 2015-09-02T09:03:05.770 回答