Module: RailsCom::Application
- Extended by:
- ActiveSupport::Concern
- Included in:
- ApplicationController
- Defined in:
- app/controllers/rails_com/application.rb
Constant Summary collapse
- LOCALE_MAP =
{ 'zh-CN' => 'zh', 'zh-TW' => 'zh', 'en-US' => 'en' }.freeze
Instance Method Summary collapse
- #current_title ⇒ Object
- #default_form_params ⇒ Object
- #default_params ⇒ Object
- #json_format? ⇒ Boolean
- #set_country ⇒ Object
- #set_flash ⇒ Object
-
#set_locale ⇒ Object
Accept-Language: “en,zh-CN;q=0.9,zh;q=0.8,en-US;q=0.7,zh-TW;q=0.6”.
- #set_timezone ⇒ Object
- #set_variant ⇒ Object
Instance Method Details
#current_title ⇒ Object
16 17 18 |
# File 'app/controllers/rails_com/application.rb', line 16 def current_title t('.title', default: :site_name) end |
#default_form_params ⇒ Object
105 106 107 |
# File 'app/controllers/rails_com/application.rb', line 105 def default_form_params {} end |
#default_params ⇒ Object
101 102 103 |
# File 'app/controllers/rails_com/application.rb', line 101 def default_params {} end |
#json_format? ⇒ Boolean
109 110 111 |
# File 'app/controllers/rails_com/application.rb', line 109 def json_format? self.request.format.json? end |
#set_country ⇒ Object
83 84 85 86 87 88 89 90 91 |
# File 'app/controllers/rails_com/application.rb', line 83 def set_country if params[:country] session[:country] = params[:country] elsif current_user session[:country] = current_user.country end logger.debug "\e[35m Country: #{session[:country]} \e[0m" end |
#set_flash ⇒ Object
93 94 95 96 97 98 99 |
# File 'app/controllers/rails_com/application.rb', line 93 def set_flash if response.successful? flash[:notice] = '操作成功!' elsif response.client_error? flash[:alert] = '请检查参数!' end end |
#set_locale ⇒ Object
Accept-Language: “en,zh-CN;q=0.9,zh;q=0.8,en-US;q=0.7,zh-TW;q=0.6”
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'app/controllers/rails_com/application.rb', line 50 def set_locale request_locales = request.headers['Accept-Language'].to_s.split(',') request_locales = request_locales.map do |i| l, q = i.split(';') q ||= '1' [l, q.sub('q=', '').to_f] end request_locales.sort_by! { |i| i[-1] } request_locales.map! do |i| r = LOCALE_MAP[i[0]] r ? r : i[0] end.uniq! locales = I18n.available_locales.map(&:to_s) & request_locales if locales.include?(I18n.default_locale.to_s) q_locale = I18n.default_locale else q_locale = locales[-1] end locales = [params[:locale].presence, session[:locale].presence, q_locale].compact locale = locales[0] I18n.locale = locale session[:locale] = locale if defined?(current_user) && current_user&.locale.to_s != I18n.locale.to_s current_user&.update locale: I18n.locale end logger.debug "\e[35m Locale: #{I18n.locale} \e[0m" end |
#set_timezone ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'app/controllers/rails_com/application.rb', line 34 def set_timezone if session[:zone] Time.zone = session[:zone] elsif request.headers['HTTP_UTC_OFFSET'].present? zone = -(request.headers['HTTP_UTC_OFFSET'].to_i / 60) Time.zone = zone session[:zone] = zone end if defined?(current_user) && current_user&.timezone.blank? current_user&.update timezone: Time.zone.name end logger.debug "\e[35m Zone: #{Time.zone} \e[0m" end |
#set_variant ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'app/controllers/rails_com/application.rb', line 20 def set_variant variant = [] if request.user_agent =~ /iPad|iPhone|iPod|Android/ variant << :phone end if request.user_agent =~ /MicroMessenger/ variant << :wechat end request.variant = variant logger.debug "\e[35m Variant: #{request.variant} \e[0m" end |