Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用rails i18n转换路径_Ruby On Rails_Ruby On Rails 4_Localization_Internationalization_Rails I18n - Fatal编程技术网

Ruby on rails 使用rails i18n转换路径

Ruby on rails 使用rails i18n转换路径,ruby-on-rails,ruby-on-rails-4,localization,internationalization,rails-i18n,Ruby On Rails,Ruby On Rails 4,Localization,Internationalization,Rails I18n,我有一个rails 4.0.0应用程序,运行时带有友好的id和globalize,即使freindly id和globalize对于这个问题可能并不重要 my routes.rb的一部分是: scope "(:locale)", locale: /en|de/ do resources :mainclasses, :path => :types end 我现在想要:path=>:types只为英文版创建一个像www.website.com/types/etc这样的url,德文版应该是

我有一个rails 4.0.0应用程序,运行时带有友好的id和globalize,即使freindly id和globalize对于这个问题可能并不重要

my routes.rb的一部分是:

scope "(:locale)", locale: /en|de/ do
  resources :mainclasses, :path => :types
end
我现在想要:path=>:types只为英文版创建一个像www.website.com/types/etc这样的url,德文版应该是:path=>:typen创建www.website.com/de/typen/etc


是否有办法根据当前区域设置更改路径?

我建议您查看一下。它将帮助您将路由转换为任何语言环境,使用范围或子域处理语言环境,等等

从您的示例中,您的

MyApp::Application.routes.draw do
  localized do
    resources :mainclasses, path: :types
  end
end
连同区域设置文件routes.yml:


希望有帮助。

它基本上是有效的。但是对于英文版,我跳过了url中的/en/locale。。。这个解决方案将/en/再次添加到url中。如何添加/de/并跳过/en/?查看配置:,有一个force_locale参数可以设置为false。是的,我已经检查过了。但是我需要保留/de/,而不使用/en/。我不使用/en/,因为我已经有一个运行中的英文网站,我不想更改此语言版本的任何url。对于德语版本,我需要/de/以避免重复URL。我现在猜route_翻译程序对我不起作用。请仔细检查文档。据我所知,force_locale:false选项只提供了以下功能:保留英文默认版本,不带/en前缀,并为其余语言添加locale/de/。这就是原始宝石背后的哲学,那是一个叉子。我正是这样使用这个宝石妹妹的:
en:
  routes:
    types: types
de:
  routes:
    types: typen