rails 4 locale切换器无法在heroku上运行

时间:2013-07-31 21:49:31

标签: heroku locale ruby-on-rails-4 twitter-bootstrap-rails

我在 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>

任何帮助将不胜感激。无论如何,我很确定我某处有一些愚蠢的错误。 ;)

0 个答案:

没有答案