From 57986c7040ed3def26dd402b18f33757fc73a8a6 Mon Sep 17 00:00:00 2001 From: Alexey Zapparov <alexey@zapparov.com> Date: Wed, 10 Jan 2024 01:51:57 +0100 Subject: [PATCH] feat: Access params ActionMailer::Preview style --- lib/view_component/preview.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/view_component/preview.rb b/lib/view_component/preview.rb index 783faff993..a5aacc2b59 100644 --- a/lib/view_component/preview.rb +++ b/lib/view_component/preview.rb @@ -13,6 +13,12 @@ class Preview include ActionView::Helpers::AssetTagHelper extend ActiveSupport::DescendantsTracker + attr_reader :params + + def initialize(params = {}) + @params = params + end + def render(component, **args, &block) { args: args, @@ -44,8 +50,7 @@ def all def render_args(example, params: {}) example_params_names = instance_method(example).parameters.map(&:last) provided_params = params.slice(*example_params_names).to_h.symbolize_keys - result = provided_params.empty? ? new.public_send(example) : new.public_send(example, **provided_params) - result ||= {} + result = new(params).public_send(example, **provided_params) || {} result[:template] = preview_example_template_path(example) if result[:template].nil? @layout = nil unless defined?(@layout) result.merge(layout: @layout)