You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 05:35:31