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

如何在Rails视图中根据私有方法结果展示关联提交或提示文本

解决方案

1. 优化控制器的related_submissions方法

把排除当前提交的逻辑移到数据库查询中,直接获取同分类下的其他提交,既提升查询效率,也能让后续视图判断更准确:

private

def set_submission
  @submission = Submission.find(params[:id])
end

def related_submissions
  # 过滤掉当前提交,只保留同分类的其他提交
  @related_submissions = Submission.where(category_id: @submission.category_id)
                                   .where.not(id: @submission.id)
end

2. 修改视图的展示逻辑

在show.html.erb中通过@related_submissions.any?判断是否存在关联提交,根据结果切换展示内容:

<div id="submissions" class="grid grid-cols-3 gap-9">
  <% if @related_submissions.any? %>
    <% @related_submissions.each do |submission| %>
      <div>
        <% if submission.image.attached? %>
          <%= link_to submission do %>
            <%= image_tag submission.image, alt: submission.title %>
          <% end %>
        <% end %>
        <div class="submission-info">
          <%= link_to submission.title, submission %>
          <div>
            <%= link_to submission.url, target: :_blank do %>
              <div>
                <%= render_svg "icons/arrow-link" %>
              </div>
            <% end %>
          </div>
        </div>
      </div>
    <% end %>
  <% else %>
    <div class="col-span-3 text-center py-12">
      There are no related submissions.
    </div>
  <% end %>
</div>

说明

  • 原视图中的next if submission == @submission可以直接删除,因为控制器已经在查询阶段过滤掉了当前提交。
  • 提示文本添加了col-span-3和text-center py-12类,让它在网格中占满三列,样式更美观协调。

内容的提问来源于stack exchange,提问作者Suedehead

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 13:23:16