2012-05-21 31 views
1

我正在使用Rails 3.2。切換時錯誤的應用程序erb文件

在我的應用程序中,我有一個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路由處理不同的路徑在同一個服務器上,但我真的不明白如何以及如果這是一個錯誤?

任何人都知道發生了什麼事?

UPDATE

在處理參數的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

+1

請使用params [:mobile]變量添加您的代碼。 – thesis

回答

0

問題可能是在這種邏輯:

before_filter :set_locale, :prepare_for_mobile 
... 

def prepare_for_mobile 
    session[:mobile_param] = params[:mobile] if params[:mobile] 
    request.format = :mobile if mobile_device? 
end 

如果PARAMS [:移動]從1變爲0(即,從移動到全位點),這兩個會話變量和request.format未設置和站點繼續表現得好像它是仍然處於移動模式。

相關問題