【问题标题】:Can I access to one params from scope?我可以从范围访问一个参数吗?
【发布时间】:2016-01-11 16:08:10
【问题描述】:

我的路由文件中有这段代码,所以我需要在范围内获取参数 ':locale'

 scope '/:locale', :locale => /it|en|es/ do
     # How I can access value of :locale here ?
  end

【问题讨论】:

    标签: ruby ruby-on-rails-4 routes


    【解决方案1】:

    This 博客很好地解释了您想要实现的目标。

    这个想法是你可以使用I18n.available_localesI18n.default_locale 来做你想做的几乎所有事情。

    # resources
    scope "/:locale", locale: /#{I18n.available_locales.join("|")}/ do
      resources :posts
    end
    
    # default url
    root to: redirect("/#{I18n.default_locale}", status: 302), as: :redirected_root
    
    # constraint to redirect when no valid locale is specified
    get "/*path", to: redirect("/#{I18n.default_locale}/%{path}", status: 302), 
      constraints: {path: /(?!(#{I18n.available_locales.join("|")})\/).*/}, format: false
    

    为了回答您的问题,以下是您可以使用当前语言环境的方法

    scope "/:locale", locale: /#{I18n.available_locales.join("|")}/ do
      root to: redirect("/%{locale}/posts", status: 302)
    end
    

    【讨论】:

      猜你喜欢
      • 2010-12-11
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      相关资源
      最近更新 更多