Rails3.2を使用しています。
私のアプリには、application.html.erb
「通常」モードをapplication.mobile.erb
提供するファイルと「モバイル」モードを提供するファイルがあります。
ホームページを「通常」モードでロードすると、application.html.erb
ファイルは「通常」モードのホームページで正しく提供されますhome.html.erb
。「モバイル」モードに切り替えるapplication.mobile.erb
と、「モバイル」モードのホームページが正しく表示されますhome.mobile.erb
。「通常」モードに戻すと、正しい「通常」モードのhome.html.erb
ファイルが提供されますが、application.mobile.erb
(「モバイル」モードの)ファイルが正しくありません。
が正しく表示されなかった後にページを更新するとapplication.mobile.erb
、application.html.erb
が正しく読み込まれます。
これは、通常モードからモバイルモードに切り替えるために使用されるリンクです
<a href="/en?mobile=0" class="ui-link">Full Site</a>
これは、モバイルモードから通常モードに切り替えるために使用されるリンクです
<a href="/en?mobile=1" class="ui-link">Mobile Site</a>
通常のスイッチを変更して、このような別のサブドメインから要求している場合(これはすでに設定したサブドメインです)
<a href="http://mobile.localhost.local:3000/en?mobile=0" class="ui-link">Full Site</a>
アプリケーションのerbファイルが正しく切り替えられ、すべてが動作します。注:同じホストを追加すると機能しません。
おそらく、Railsルーティングは同じサーバー上のパスを異なる方法で処理しますが、これがどのように、そしてこれがバグであるかを本当に理解していませんか?
誰が何が起こっているのか知っていますか?
アップデート
引数を処理するapplication_controllerのコードは次のとおりです。
before_filter :set_locale, :prepare_for_mobile
...
def mobile_device?
if session[:mobile_param]
session[:mobile_param] == "1"
else
request.user_agent =~ /Mobile|webOS/
end
end
helper_method :mobile_device?
def prepare_for_mobile
session[:mobile_param] = params[:mobile] if params[:mobile]
request.format = :mobile if mobile_device?
end
そして私は私のmime_types.rbにこれを持っています
Mime::Type.register_alias "text/html", :mobile
これが起こっている場所の例ですhttp://www.zode64.com
右上のモバイルリンクと通常のリンクには新しいサブドメインがあることに注意してください。firebugを使用して現在のサブドメインに変更すると、正しいページが開きますが、間違ったページが開きます。application.erb