ruby-on-rails - 如何在 Rails 中覆盖 `root_path`?

标签 ruby-on-rails ruby routing

我有这样定义的语言环境:

# routes.rb
scope "(:locale)", locale: /#{I18n.available_locales.join("|")}/ do
  ...
  root "home#index"
end

我还在 ApplicationControllerdefault_url_params 中设置了语言环境。
这样我的所有路线和网址都包含这样的语言环境:http://example.com/en/something
http://example.com/fr/something
这对我来说是预期的行为。

我也有这样的根网址:
http://example.com/en
http://example.com/fr

我想要实现的是 exclude en (default) locale for root_path,这样 root_path :en 语言环境(显式传递或通过 default_url_params)是 http://example.com/

有什么办法吗? 我可以覆盖 root_path 以在其中进行黑客攻击吗?

谢谢。

最佳答案

覆盖 ApplicationController 中的 root_path 方法:

def root_path
  (I18n.locale == 'en') ? '/' : super
end

关于ruby-on-rails - 如何在 Rails 中覆盖 `root_path`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32464663/

相关文章:

ruby-on-rails - 带有符号的布局会产生错误

ruby-on-rails - 'rails server' 命令返回错误 : `mkdir' : Permission denied @ dir_s_mkdir

javascript - 在 Angular 路由器的空路径上有条件地加载模块

ruby-on-rails - Rails 3 路由和命名空间

angular - 当路线改变 Angular 时如何运行函数?

ruby-on-rails - #<ActiveRecord::Relation []> 的未定义方法 `authenticate'

ruby-on-rails - 带有 Rails 应用程序的 Ubuntu 上的权限问题

ruby - 如何在不使用太多内存的情况下在 Ruby 中查找字符串数组的所有排列?

ruby-on-rails - 如何从此 ActionDispatch 获取文件名

ruby - Nokogiri 如何处理未闭合的 HTML 标签,例如 <br>?