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

Rails中复用Partial并切换循环变量实现多标签页展示

Rails复用Partial实现不同标签页展示不同数据

解决步骤:

  1. 修改视图的Partial渲染代码
    在调用render partial时,通过locals参数将控制器中不同的数据集传递给Partial:

    <div class="tab-content" id="pills-tabContent">
      <div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="campaigns-active-tab">
        <%= render partial: 'campaigns_list', locals: { campaigns: @active_campaigns } %>
      </div>
      <div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="campaigns-inactive-tab">
        <%= render partial: 'campaigns_list', locals: { campaigns: @inactive_campaigns } %>
      </div>
    </div>
    
  2. 调整Partial代码使用局部变量
    将Partial中原本的实例变量@campaigns改为局部变量campaigns,以此接收视图传递的不同数据集:

    <% campaigns.each do |campaign| %>
        <tr scope="row d-flex align-items-center justify-content-center">
          <!-- 保留原有行内容 -->
        </tr>
    <% end %>
    

常见失败原因

之前使用locals未成功,大概率是因为Partial里仍在使用实例变量@campaigns,而非locals传递的局部变量。Rails中Partial默认能访问实例变量,但要通过locals传参生效,必须在Partial里使用对应名称的局部变量(不带@前缀)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:30:56