我在 Heroku 部署了双语 rails 4 应用程序 - 俄语&英语。 一切都工作到有一天,语言环境切换器无缘无故地破坏了。它在开发和生产版本上完全正常工作 - 当我指向语言链接时,它显示与'localhost:3000 / en'的正常链接或'localhost:3000 / ru' param。但是在Heroku中它显示'abarskaya.com/%7B:locale=>'而不是'abarskaya.com/ru'或'abarskaya.com/烯“即可。这真的很奇怪,因为我没有改变任何东西。 这是我的应用程序控制器
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_locale
protected
def set_locale
I18n.locale = params[:locale] || session[:locale] || I18n.default_locale
end
# ensure locale persists
def default_url_options(options={})
logger.debug "default_url_options is passed options: #{options.inspect}\n"
{ locale: I18n.locale }
end
end
我的route.rb文件是:
scope "(:locale)", locale: /ru|en/ do
get 'about' => 'home#about', :as => 'about'
get 'services' => 'home#services', :as => 'services'
get 'contacts' => 'home#contacts', :as => 'contacts'
end
root :to => 'home#index'
get '/:locale' => 'home#index'
这是 shared / _header.html.erb 部分中的切换器本身(我正在使用 rails_bootstrap_navbar gem)
<li class="dropdown visible-desktop">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><%= image_tag(:en == locale ? 'us-flag.png' : 'ru-flag.png') %> <b class="caret"></b></a>
<ul class="dropdown-menu">
<li class="nav-header"><%= t(:language) %></li>
<li class="divider"></li>
<%= menu_item 'English', locale: 'en' %>
<%= menu_item 'Русский', locale: 'ru' %>
</ul>
</li>
任何帮助将不胜感激。无论如何,我很确定我某处有一些愚蠢的错误。 ;)