default_url_options不会覆盖路由默认值

时间:2017-08-28 16:52:45

标签: ruby-on-rails

我需要将语言环境添加到所有路由,而不是更新所有*_path*_url调用我尝试向应用程序控制器添加default_url_options方法,这是方法I& #39; m使用

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:,我会得到正确的网址

    http://localhost:3000/login是我的默认语言区域时,
  1. :localehttp://localhost:3000/es/login是我的:locale
  2. 时,
  3. :es

    我正在使用Rails 5.1.3

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用命名空间?

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let spacing : CGFloat = (collectionViewLayout as? UICollectionViewFlowLayout)?.minimumInteritemSpacing ?? 0.0
    let widthPerItem = (view.frame.width  - spacing * 2)/ 3
    return CGSize(width: widthPerItem, height: widthPerItem)
}

也刚刚发现这个,看起来这些人已经解决了它: https://stackoverflow.com/a/8237800/3753556