2010-06-12 108 views
0

有沒有辦法將某些東西附加到沒有設置值的查詢字符串?將空查詢字符串參數追加到Rails中的URL

我希望看到這種URL生成:http://local/things?magic

我在找的是當用戶轉到http://local/other?magic那麼生成的頁面中的每個URL最後都會包含magic

下面的代碼幾乎是一個解決方案,但它給我http://local/things?magic=。有一個額外的=,我不想那裏。

def default_url_options(options) 
    if params.has_key?("magic") 
     { :magic => "" } 
    end 
end 

設置{ :magic => nil }將從生成的URL中完全刪除魔術。

回答

0

由於對以下評論的更改問題進行了編輯:

啊我明白了。

您可以輕鬆地爲所有設備使用相同的URL,並通過檢查HTTP_USER_AGENT的請求環境來分開。

但是,如果這種區分是不夠的(我認爲這是足以讓所有病例的80%以上),你可以做到以下幾點:

config/routes.rb

map.with_options :prefix => '/m', :format => 'mobile' do |mobile| 
    mobile.resources :apples 
    mobile.resource :user 
    mobile.connect #... 
end 

# generates 
# /m/apples 
# /m/apples/new 
# ... 
# /m/user 
# ... 

我沒有測試過這,但也許你將不得不添加一個MIME類型映射:format =>'mobile'。

+0

我想有不同版本的頁面,並通過查詢字符串分開它們。一個頁面的主要版本將是http://mysite.com/somepage然後可能有一個移動版本在http://mysite.com/somepage?mobile 理想情況下,我想這樣做與子域像這樣http://m.mysite.com或http://mobile.mysite.com,但不適用於初學者。 – Termopetteri 2010-08-04 05:46:38

+0

你見過我的編輯嗎? – Overbryd 2010-08-12 12:56:39

+0

我有幾個星期從Rails休息..但我忘了說我的網址的地區設置也是這樣的:http://mysite.com/fi/somepage和http://mysite.com/en/ somepage我不知道你的解決方案將如何影響此.. – Termopetteri 2010-08-13 11:50:43

0

這是什麼餅乾!然後它會自動按照您要查找的方式工作。不是使用URL查詢字符串參數,而是當瀏覽器請求另一個URL(直到瀏覽器關閉)時,它將在請求中包含Cookie。

+0

問題是,Cookie打破了URL(統一資源定位器)的含義。如果有人使用cookie來顯示不同版本的頁面副本 - 將URL粘貼到另一個用戶的行爲不會像預期的那樣,並且書籤頁面很可能不會像用戶所需的那樣工作。 Cookie將打破URL的「統一」部分,這意味着在同一個URL中會有不同版本的頁面,這是不期望的。 但是,餅乾至少是解決問題的捷徑,但它帶有一些令人討厭的副作用。 – Termopetteri 2010-08-13 05:29:24

相關問題