点击turbo_frame内的链接,如何获取turbo_stream响应?
解决方法
要让点击链接时返回turbo_stream响应,有两种简单的实现方式:
方法一:通过URL参数指定响应格式
直接在link_to里添加format: :turbo_stream参数,让请求明确指向turbo_stream格式的视图:
turbo-frame#results = link_to "search", search_path(format: :turbo_stream) = "default result"
这样请求的URL会带上.turbo_stream后缀(或者?format=turbo_stream,取决于路由配置),Rails会自动匹配search.turbo_stream.slim模板。
方法二:使用Turbo的data-turbo-stream属性
给链接添加data: { turbo_stream: true }属性,告诉Turbo发起请求时携带text/vnd.turbo-stream.html的Accept头,触发turbo_stream响应:
turbo-frame#results = link_to "search", search_path, data: { turbo_stream: true } = "default result"
这种方式不需要修改URL,靠Turbo的内置机制切换请求格式,更符合Turbo的设计习惯。
两种方法都能让控制器返回search.turbo_stream.slim的内容,替换turbo-frame#results里的原有内容。
内容的提问来源于stack exchange,提问作者Constantin De La Roche
相关产品推荐
相关产品推荐

