Module: Turbo::DriveHelper
- Defined in:
- app/helpers/turbo/drive_helper.rb
Overview
Helpers to configure Turbo Drive via meta directives. They come in two variants:
The recommended option is to include yield :head in the <head> section of the layout. Then you can use the helpers in any view.
Example
# app/views/application.html.erb
<html><head><%= yield :head %></head><body><%= yield %></html>
# app/views/trays/index.html.erb
<% turbo_exempts_page_from_cache %>
<p>Page that shouldn't be cached by Turbo</p>
Alternatively, you can use the _tag
variant of the helpers to only get the HTML for the meta directive.
Instance Method Summary collapse
-
#turbo_exempts_page_from_cache ⇒ Object
Pages that are more likely than not to be a cache miss can skip turbo cache to avoid visual jitter.
-
#turbo_exempts_page_from_cache_tag ⇒ Object
See
turbo_exempts_page_from_cache
. -
#turbo_exempts_page_from_preview ⇒ Object
Specify that a cached version of the page should not be shown as a preview during an application visit.
-
#turbo_exempts_page_from_preview_tag ⇒ Object
See
turbo_exempts_page_from_preview
. -
#turbo_page_requires_reload ⇒ Object
Force the page, when loaded by Turbo, to be cause a full page reload.
-
#turbo_page_requires_reload_tag ⇒ Object
See
turbo_page_requires_reload
. -
#turbo_refresh_method_tag(method = :replace) ⇒ Object
Configure method to perform page refreshes.
-
#turbo_refresh_scroll_tag(scroll = :reset) ⇒ Object
Configure scroll strategy for page refreshes.
-
#turbo_refreshes_with(method: :replace, scroll: :reset) ⇒ Object
Configure how to handle page refreshes.
Instance Method Details
#turbo_exempts_page_from_cache ⇒ Object
Pages that are more likely than not to be a cache miss can skip turbo cache to avoid visual jitter. Cannot be used along with turbo_exempts_page_from_preview
.
21 22 23 |
# File 'app/helpers/turbo/drive_helper.rb', line 21 def turbo_exempts_page_from_cache provide :head, turbo_exempts_page_from_cache_tag end |
#turbo_exempts_page_from_cache_tag ⇒ Object
See turbo_exempts_page_from_cache
.
26 27 28 |
# File 'app/helpers/turbo/drive_helper.rb', line 26 def turbo_exempts_page_from_cache_tag tag.(name: "turbo-cache-control", content: "no-cache") end |
#turbo_exempts_page_from_preview ⇒ Object
Specify that a cached version of the page should not be shown as a preview during an application visit. Cannot be used along with turbo_exempts_page_from_cache
.
32 33 34 |
# File 'app/helpers/turbo/drive_helper.rb', line 32 def turbo_exempts_page_from_preview provide :head, turbo_exempts_page_from_preview_tag end |
#turbo_exempts_page_from_preview_tag ⇒ Object
See turbo_exempts_page_from_preview
.
37 38 39 |
# File 'app/helpers/turbo/drive_helper.rb', line 37 def turbo_exempts_page_from_preview_tag tag.(name: "turbo-cache-control", content: "no-preview") end |
#turbo_page_requires_reload ⇒ Object
Force the page, when loaded by Turbo, to be cause a full page reload.
42 43 44 |
# File 'app/helpers/turbo/drive_helper.rb', line 42 def turbo_page_requires_reload provide :head, turbo_page_requires_reload_tag end |
#turbo_page_requires_reload_tag ⇒ Object
See turbo_page_requires_reload
.
47 48 49 |
# File 'app/helpers/turbo/drive_helper.rb', line 47 def turbo_page_requires_reload_tag tag.(name: "turbo-visit-control", content: "reload") end |
#turbo_refresh_method_tag(method = :replace) ⇒ Object
Configure method to perform page refreshes. See turbo_refreshes_with
.
76 77 78 79 |
# File 'app/helpers/turbo/drive_helper.rb', line 76 def turbo_refresh_method_tag(method = :replace) raise ArgumentError, "Invalid refresh option '#{method}'" unless method.in?(%i[ replace morph ]) tag.(name: "turbo-refresh-method", content: method) end |
#turbo_refresh_scroll_tag(scroll = :reset) ⇒ Object
Configure scroll strategy for page refreshes. See turbo_refreshes_with
.
82 83 84 85 |
# File 'app/helpers/turbo/drive_helper.rb', line 82 def turbo_refresh_scroll_tag(scroll = :reset) raise ArgumentError, "Invalid scroll option '#{scroll}'" unless scroll.in?(%i[ reset preserve ]) tag.(name: "turbo-refresh-scroll", content: scroll) end |
#turbo_refreshes_with(method: :replace, scroll: :reset) ⇒ Object
Configure how to handle page refreshes. A page refresh happens when Turbo loads the current page again with a replace visit:
Parameters:
-
method
- Method to update the <body> of the page during a page refresh. It can be one of:-
replace:
: Replaces the existing <body> with the new one. This is the
default behavior.
-
morph:
: Morphs the existing <body> into the new one.
-
-
scroll
- Controls the scroll behavior when a page refresh happens. It can be one of:-
reset:
: Resets scroll to the top, left corner. This is the default. -
preserve:
: Keeps the scroll.
-
Example Usage:
turbo_refreshes_with(method: :morph, scroll: :preserve)
70 71 72 73 |
# File 'app/helpers/turbo/drive_helper.rb', line 70 def turbo_refreshes_with(method: :replace, scroll: :reset) provide :head, turbo_refresh_method_tag(method) provide :head, turbo_refresh_scroll_tag(scroll) end |