2017-08-28 85 views
0

我需要語言環境添加的,而不是所有的更新和*_path電話*_url我想一個default_url_options方法添加到我的應用程序控制器的所有路由,這是我使用default_url_options不覆蓋路由默認

方法
def default_url_options 
    { locale: (I18n.locale == I18n.default_locale ? nil : I18n.locale.to_sym) } 
end 

這是我的路線文件:

locales = I18n.available_locales - [:en] 
scope '(:locale)', locale: /#{locales.join('|')}/, defaults: { locale: I18n.default_locale } do 
    get '/login', to: 'sessions#new', as: :login 
    root to: 'home#index' 
    match '*a', to: '#missing_action', via: :all, as: nil 
end 

login_url將呈現http://localhost:3000/login這不是我想要的。

如果我從我的路線範圍刪除defaults:我得到了正確的網址

  1. http://localhost:3000/login:locale是我的默認語言環境
  2. http://localhost:3000/es/login:locale是我:es

我使用Rails 5.1.3

回答

0

有y ou嘗試使用名稱空間?

namespace :locale, defaults: { locale: I18n.default_locale } do 

而且剛剛發現這個,貌似這些傢伙已經解決了這個問題: https://stackoverflow.com/a/8237800/3753556

+0

您鏈接這個答案是我使用的是什麼,也爲它增加了一個超類所有的命名空間是行不通的控制器 –