Skip to content

Instantly share code, notes, and snippets.

@tinhnq
Forked from dnagir/application_helper.rb
Created August 11, 2020 08:06
Show Gist options
  • Save tinhnq/6315d05b1c43c4fcd166d7cdb43228ba to your computer and use it in GitHub Desktop.
Save tinhnq/6315d05b1c43c4fcd166d7cdb43228ba 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