0

フォーマット ビューの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

これを機能させる方法はありますか?

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 に答える