2

我不得不使用rails url助手而不是路徑助手(在某些情況下),因爲我正在使用子域名的應用程序,所以我必須將域選項作爲一個參數。從rails中刪除區域設置參數

然而,這是導致鏈接呈現爲:

http://sub.domain.dev/the-page?locale=en

我已經使用的應用程序控制器下面的變化試過了,沒有用:

def default_url_options(options={}) 
    { :locale => :en } 
end 

怎麼辦我刪除該區域設置參數?

我在使用RefineryCMS。

回答

0

如果您正在使用的語言環境,我建議如下:

在你的routes.rb:

scope "(:locale)", locale: /en|br/ do 
    resources :the-pages 
end 

在應用程序控制器:

before_filter :set_locale 
def set_locale 
    I18n.locale = params[:locale] 
end 

def default_url_options(options={}) 
    { locale: I18n.locale } 
end 

這樣,您的網址就會成爲:

http://sub.domain.dev/en/the-page 
http://sub.domain.dev/pt/the-page 

編輯 - 如果你不想任何語言環境,則需要從應用控制器中刪除:

#remove the below 
def default_url_options(options={}) 
{ :locale => :en } 
end 

此外,還要確保你沒有任何的語言環境中您的routes.rb

+0

謝謝,我目前並不需要/想以任何方式使用的語言環境 - 它只是在一瞬間的英語,我想完全刪除該參數並有乾淨的網址... – 2013-02-13 10:38:43

+0

比你只需要將它從你的應用程序控制器中刪除。我編輯了答案。 – gabrielhilal 2013-02-13 10:43:31

+0

我只是補充說,試圖以某種方式去除/改變它。它看起來就像它發生的路徑助手一樣 - 當我在引擎 – 2013-02-13 10:56:31

4

奇怪,但在我的情況的人:

當使用發動機RefineryCMS,即使不被使用的語言環境和其他引擎產生預期的網址,修復了設置:

# config/initializers/refinery/i18n.rb 
Refinery::I18n.configure do |config| 
    config.enabled = false 
end 
1

對於refinerycms,國際化〜> 4.0:

# config/initializers/refinery/i18n.rb 

Refinery::I18n.configure do |config| 
    config.url_filter_enabled = false 
end