ruby - 我可以从范围访问一个参数吗?

标签 ruby ruby-on-rails-4 routes

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

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

最佳答案

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

关于ruby - 我可以从范围访问一个参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34726058/

相关文章:

ruby-on-rails - Rails是否可以优雅地处理缓存存储中断(memcached)?

node.js - Express.js 使用 Router vs App.use 路由的好处?

node.js - 组织 myapp/routes/* 的正确方法

ruby-on-rails - 使用 Rmagick 或 ImageMagick 在背景上放置标题

ruby - ActiveModel::匿名类的验证

ruby-on-rails - 升级 sprockets-rails gem 中断测试

ruby-on-rails - 使用带有表单对象的 Rails find_or_create_by

ruby-on-rails - 如果目录已经存在,则在 Ruby 上通过 SFTP 创建目录失败

ruby - 在 resque scheduler 中调度动态作业

angular - 访问路由参数 - angular 8