Skip to content

Instantly share code, notes, and snippets.

@chrise86
Forked from dnagir/application_helper.rb
Last active November 18, 2017 09:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chrise86/6aad1c8116638242d1efa5023363d956 to your computer and use it in GitHub Desktop.
Save chrise86/6aad1c8116638242d1efa5023363d956 to your computer and use it in GitHub Desktop.
Render a different variant in rails
module ApplicationHelper
def with_variant(new_variant, &block)
old_variants = lookup_context.variants
begin
lookup_context.variants = [new_variant]
return block.call
ensure
lookup_context.variants = old_variants
end
end
end
# usage: with_variant(:another) { render partial: 'another/partial' }
# spec/support/variants.rb
# `use_variant :another` on the exapmle or within a test
module RailsVariantsMacros
extend ActiveSupport::Concern
def use_variant(new_variant)
view.lookup_context.variants = [new_variant]
end
module ClassMethods
def use_variant(new_variant)
before { use_variant(new_variant) }
end
end
end
RSpec.configure do |config|
config.include(RailsVariantsMacros, type: :view)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment