Turbo Rails路由异常:点击dashboard链接未跳转至预期仪表盘
问题:Turbo在Rails中跳转异常,返回仪表盘时出现混合视图
问题现象
点击tweets/show页面中的link_to dashboard_path后,未跳转到预期的仪表盘视图,而是出现混合视图——核心差异为第三列内容仍显示tweets/show的内容,而非仪表盘的对应内容。已通过运行rails routes验证dashboard_path有效,对应路由:
dashboard GET /dashboard(.:format) dashboard#index
视图渲染逻辑
应用布局(views/layouts/application.html.erb)
用户登录并创建用户名后,布局会整合侧边栏与对应视图:
<% if user_signed_in? %> <% if controller_name == "usernames" %> <%= yield %> <% else %> <div class="container py-2 border border-dark"> <div class="d-flex flex-row"> <%= render "shared/sidebar" %> <%= yield %> </div> </div> <% end%> <% else %> <%= yield %> <% end%>
仪表盘视图(views/dashboard/index.html.erb)
布局中yield对应的仪表盘内容:
<div class="mb-4"> <%= link_to "Home", dashboard_path %> </div> <div class="mb-4"> <%= render "shared/tweet_form" %> </div> <div id="tweets"> <%= render partial: "tweets/tweet", collection: @tweets, as: :tweet_presenter %> </div> </div> <div class="col-3"> <h4>This is the Dashboard third column</h4> </div>
推文局部视图(views/tweets/_tweet.html.erb)
渲染单条推文的局部视图,包含跳转到推文详情的链接:
<%= turbo_frame_tag dom_id(tweet_presenter.tweet) do %> … <%= link_to tweet_path(tweet_presenter.tweet), target: :_top do %> <%= image_tag "speech.png", size: "20x20", class: "me-1" %> <span>Replies<span> <% end %> … <% end %>
推文详情视图(views/tweets/show.html.erb)
点击推文链接进入的详情页,包含返回仪表盘的链接:
<%= turbo_frame_tag dom_id(@tweet) do %> <%= link_to dashboard_path do %> <%= image_tag "back-arrow.png", size: "30x30" %> <span>Tweet</span> <% end %> <%= @tweet.body %> <% end %> <div> <h4>This is the Show third column</h4> </div>
问题核心
在tweets/show页面点击返回仪表盘的链接时出现上述异常,尝试改用link_to :back也无法解决问题。
内容的提问来源于stack exchange,提问作者German
相关产品推荐
相关产品推荐

