Переключатель локали i18n не перенаправляет на текущую страницу в производстве (rails4)

Я работаю с приложением с тремя языками изначально. Я сделал переключатель, который работает нормально (в разработке и в производстве), но перенаправляет на домашнюю страницу.

Я просто хочу, чтобы коммутатор перенаправлял на текущую страницу, поэтому я имел дело с этим и решил это в режиме разработки, но когда я развернул на heroku, он потерял даже переводы.

Что мне не хватает? Я очень младший с Rails...

Это мой код в application_controller.rb:

class ApplicationController < ActionController::Base

    before_action :set_i18n_locale_from_params
    before_action :redirect_to_locale
    # ...
    # Prevent CSRF attacks by raising an exception.
    # For APIs, you may want to use :null_session instead.
    protect_from_forgery with: :exception

    # ...

    protected
    def set_i18n_locale_from_params
        if params[:set_locale]
            if I18n.available_locales.map(&:to_s).include?(params[:set_locale])
                I18n.locale = params[:set_locale]
            else
                flash.now[:notice] =
                    "#{params[:set_locale]} translation not available"
                logger.error flash.now[:notice]
            end
        end
    end

    def default_url_options
        { locale: I18n.locale }     
    end

    helper_method :current_path
    def current_path
        url = request.env["PATH_INFO"]
        Rails.application.routes.recognize_path url
    end

    def redirect_to_locale
        if params[:set_locale].present?
            route = current_path
            route[:locale] = I18n.locale
            redirect_to route
        end
    end

end

и это переключатель в application.html.erb:

            <div id="languages">
                <%= I18n.locale %>
                <%= form_tag current_path, class: 'locale', :method => :get do %>
                    <%= select_tag 'set_locale',
                        options_for_select(LANGUAGES, I18n.locale.to_s),
                        onchange: 'this.form.submit()' %>
                    <%= submit_tag 'submit' %>
                    <%= javascript_tag "$('.locale input').hide()" %>
                <% end %>
            </div>

Любая помощь будет признательна! Благодарю.

0 ответов

Другие вопросы по тегам