2012-11-15 21 views
2

我知道這已被問過,但仍然無法使其工作。 我試圖讓:locale參數使用default_url_options,像這樣顯示:當在Ruby on Rails中使用作用域時,URL中的默認參數3

# SomethingController < ApplicationController 
def default_url_options(options={}) 
    { :locale => I18n.locale } 
end 

I18n.locale設置有before_filter並且具有正確的值(用撬調試)。 的路線:

# In routes 
scope "(:locale)", :defaults => { :locale => I18n.default_locale } do 
    get "something" => "something#index", :as => :something_index 
end 

在我看來,我想:

url_for :something_index 

something_index_url 

,但他們都返回 「/東西」,而不是 「/ EN /某事」。爲了自動獲取參數,我還需要做些什麼嗎?

我讀到這個here

每一個輔助方法,依賴於url_for(如命名 路線像root_path或root_url,像books_path或 BOOKS_URL等資源的路線傭工)現在將自動包括區域設置在 查詢字符串

回答

0

你可以修改GET匹配:

scope :locale, :defaults => { :locale => I18n.default_locale } do 
    get "/:locale/something" => "something#index", :as => :something_index 
end 

爲了更好的方法,請參考這裏:

Rails optional /:locale route

+0

曾嘗試這一點,但沒有奏效。 :-( – Donovan

+1

剛剛更新了答案,這是因爲你正在使用'「(:locale)」'而不是':locale'。 –

+0

你說得對,現在顯示的是語言環境,但它總是默認的語言環境。 ':defaults => {:locale => I18n.default_locale}') – Donovan

相關問題