Setting default_url_options for mounted Rails engine

前端 未结 1 1948
别那么骄傲
别那么骄傲 2021-01-03 07:27

Using rails 3.2.13 and spree 2.0.2
I\'ve encountered the similar problem as in Rails mountable engine under a dynamic scope

My routes:

scope \':l         


        
相关标签:
1条回答
  • 2021-01-03 07:30

    Faced exactly the same problem and I have found a solution for that...

    Here is my application_controller-File (my engines inherit from this file (which is the Main Apps ApplicationController, so that I don't have code-duplication)

    #!/bin/env ruby
    # encoding: utf-8
    class ApplicationController < ActionController::Base
      # Prevent CSRF attacks by raising an exception.
      # For APIs, you may want to use :null_session instead.
      protect_from_forgery with: :exception
    
      before_filter :set_locale_from_params
    
      def url_options
        { locale: I18n.locale }
      end
    
      protected
        def set_locale_from_params
          if params[:locale]
            if I18n.available_locales.include?(params[:locale].to_sym)
              I18n.locale = params[:locale]
            else
              flash.now[:notice] = 'Translation not available'
              logger.error flash.now[:notice]
            end
          end
        end
    end
    

    Note, that the url_options-code is outside the protected part. It has to be public.

    Found the tipps for the solution here: default_url_options and rails 3

    Hope it helps

    Regards

    Philipp

    0 讨论(0)
提交回复
热议问题