I have a route posts/new which is intercepted by a
turbo_frame_tag and displays a Modal. All good at this point.
Now if users try to access posts/new directly it will display the modal and of course
@posts is nil, which I can just go and define it but that’s not what I want.
What I need is a way to prevent direct access to posts/new — anybody got a way of doing this?
In your specific case of using a modal, I’m assuming that the turbo frame for the modal is also found on the resulting page, triggering the modal.
One benefit of Turbo is that it’s a progressive enhancement, so when in doubt, trust that there’s a way to make that idea work.
Personally, I’d use this: having a param (
?modal=true) on the modal turbo_frame’s src, but navigating to
posts#new directly doesn’t have the param.
Then, in the presence of that param, serve a variant that wraps the
posts#new form in a turbo_frame.
In the absence of that param, serve the default variant without the wrapping turbo_frame.
See this post on reddit with some code examples, where the OP was asking specifically about a problem with
Beautiful, thanks so much. I’ll try that and report back.