Module: CurrentThemeHelper

Defined in:
app/helpers/current_theme_helper.rb

Instance Method Summary collapse

Instance Method Details

#current_theme_objectObject



2
3
4
# File 'app/helpers/current_theme_helper.rb', line 2

def current_theme_object
  @current_theme_object ||= "BulletTrain::Themes::#{current_theme.to_s.classify}::Theme".constantize.new
end

#render(options = {}, locals = {}, &block) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'app/helpers/current_theme_helper.rb', line 6

def render(options = {}, locals = {}, &block)
  options = current_theme_object.resolved_partial_path_for(@lookup_context, options, locals) || options

  # This is where we try to just lean on Rails default behavior. If someone renders `shared/box` and also has a
  # `app/views/shared/_box.html.erb`, then no error will be thrown and we will have never interfered in the normal
  # Rails behavior.
  #
  # We also don't do anything special if someone renders `shared/box` and we've already previously resolved that
  # partial to be served from `themes/light/box`. In that case, we've already replaced `shared/box` with the
  # actual path of the partial, and Rails will do the right thing from this point.
  #
  # However, if one of those two situations isn't true, then this call here will throw an exception and we can
  # perform the appropriate magic to figure out where amongst the themes the partial should be rendering from.
  super
end