Turbo Frames
Turbo frames are a way to update the content of a page without reloading the entire page. They are a key feature of Turbo, a framework for building fast and responsive web applications; however, they do break encapsulation by the fact that they work with DOM ids, which can easily be duplicated by accident when using the rails dom_id
helper.
Regardless, weβll take a look at how to use them with Phlex, then explore other approaches to updating frames that minimize the risk of duplication.
A Phlex view with Turbo Frames
Letβs start with a Phlex view that loads a Turbo Frame.
π Unlock content
Pre-order this course to unlock this video, source code, and content.
class View::Post::Show < βββββ::ββββ
ββββββββββββββββ :turbo_frame
def ββββββββββ(ββββ)
βββββ = ββββ
end
def ββββββββ
ββ { βββββ.βββββ }
ββββ(class: "prose"){
ββββββ βββββ.ββββ, type: :md
}
β ββββββ β ββββββββ βββββ ββββ βββββ ββββ βββ ββββββ
βββββββββββ id: "comments", src: ββββββββββββββββββ(βββββ)
end
end
βββ ββββββββββ ββββ βββββ ββ ββββββββ ββββ ββββββββ ββ βββ βββββββββββββββββββ βββββ
class PostCommentsController < βββββββββββββββββββββ
def βββββ
βββββββββ = βββββ.ββββββββ
ββββββ ββββ::ββββββββ::βββββ.βββ(βββββββββ)
end
end
β
class CommentsController < βββββββββββββββββββββ
βββββββββββββ { βββββββββ = βββββββ.βββ }
def βββββ
ββββββ ββββ::ββββββββ::βββββ.βββ(βββββββββ)
end
def ββββββ
ββββββββββ do |format|
format.ββββ { βββββββββββ βββββββββββββ }
format.ββββββββββββ do
β βββ βββββββββββββββββββ βββββββββββ ββββββββ ββ
ββββββββββββ.ββββββ "comments", ββββ::ββββββββ::ββββ.βββ(ββββββββ)
β βββ ββββββββββββββββββββ βββββββββββββ ββ ββ
β βββ ββββββ ββββββββ ββββββββββββββ βββββββ β βββββ βββββ β ββ
β ββ βββ ββ
ββββββββββββ.ββββββ "new_comment", ββββ::ββββββββ::ββββ.βββ(ββββββββ)
end
end
end
end