如何使用Turbo无刷新渲染/替换Partial(Rails 6.1.6)
用Turbo实现无刷新渲染并替换合作方Partial
1. 调整视图中的链接
把原来触发页面刷新的链接改成请求Turbo Stream格式,确保点击时不刷新页面:
<% @partners.each do |partner| %> <%= link_to partner_path(partner, format: :turbo_stream) do %> <%= image_tag partner.logo_url %> <% end %> <% end %> <!-- 用于渲染/替换Partial的容器 --> <div id="partner-details"></div>
2. 创建Turbo Stream模板
在app/views/partners目录下新建show.turbo_stream.erb,定义Partial的替换逻辑:
<%= turbo_stream.replace "partner-details", partial: "partners/details", locals: { partner: @partner } %>
turbo_stream.replace会定位到页面上ID为partner-details的容器,直接用目标Partial替换其内容——不管容器之前有没有内容,都会完成渲染或替换操作。
3. 完善控制器响应
确保PartnersController的show动作支持Turbo Stream格式的请求:
class PartnersController < ApplicationController def show @partner = Partner.find(params[:id]) respond_to do |format| format.html # 保留常规HTML响应,兼容直接访问详情页 format.turbo_stream # 处理Turbo Stream请求 end end end
4. 验证效果
点击合作方图片时,浏览器会发送Turbo Stream请求(请求头包含Accept: text/vnd.turbo-stream.html),控制器返回Turbo Stream模板后,页面会无刷新更新partner-details区域的内容,完全符合你要的交互需求。
内容的提问来源于stack exchange,提问作者Shruikan
相关产品推荐
相关产品推荐

