Class: Spree::NewsletterSubscribersController

Inherits:
StoreController
  • Object
show all
Defined in:
app/controllers/spree/newsletter_subscribers_controller.rb

Instance Method Summary collapse

Methods inherited from StoreController

#current_taxon, #default_products_sort, #permitted_products_params, #products_filters_params, #render_404_if_store_not_exists, #store_filter_names, #store_filter_names_hash

Methods included from AnalyticsHelper

#analytics_event_handlers, #track_event, #unsupported_event?, #visitor_id

Methods included from WishlistHelper

#current_wishlist

Methods included from PasswordProtected

#redirect_to_password

Methods included from StorefrontHelper

#as_aspect_ratio, #page_description, #page_image, #paths_equal?, #render_storefront_partials, #show_account_pane?, #spree_storefront_base_cache_key, #spree_storefront_base_cache_scope, #svg_country_icon, #tailwind_classes_for

Methods included from ThemeConcern

#default_url_options, #set_theme_view_paths

Instance Method Details

#createObject

POST /newsletter_subscribers



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'app/controllers/spree/newsletter_subscribers_controller.rb', line 8

def create
  subscriber = Spree::NewsletterSubscriber.subscribe(email: newsletter_params[:email], user: try_spree_current_user)

  if subscriber.errors.any?
    flash[:error] = subscriber.errors.full_messages.to_sentence.presence || Spree.t('something_went_wrong')
  elsif subscriber.verified? && subscriber.previous_changes.blank?
    flash[:notice] = Spree.t('storefront.newsletter_subscribers.already_subscribed')
  else
    track_event('subscribed_to_newsletter', { email: subscriber.email, user: try_spree_current_user })
    flash[:success] = Spree.t('storefront.newsletter_subscribers.success')
  end

  respond_to do |format|
    format.html { redirect_to spree.root_path }
    format.turbo_stream
  end
end

#verifyObject

GET /newsletter_subscribers/verify?token=VERIFICATION_TOKEN

Raises:

  • (ActiveRecord::RecordNotFound)


27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/controllers/spree/newsletter_subscribers_controller.rb', line 27

def verify
  raise ActiveRecord::RecordNotFound if params[:token].blank?

  subscriber = ActiveRecord::Base.connected_to(role: :writing) do
    Spree::NewsletterSubscriber.verify(token: params[:token])
  end

  if subscriber.verified?
    redirect_to spree.root_path, notice: Spree.t('storefront.newsletter_subscribers.verified')
  else
    redirect_to spree.root_path, alert: Spree.t('storefront.newsletter_subscribers.verification_failed')
  end
end