我是Ruby on Rails新手,需要帮助来弄清楚Turbo Stream在Rails中是如何工作的。我通过教程做了所有的事情,但是页面的内容没有更新。我决定测试Turbo Stream在简单div上的行为。
在index.html.erb
文件中,我用id="test"
创建了这样的div:
<div id = "test">Hallow</div>
在同一个文件中,我创建了一个按钮,它调用控制器中的方法refresh
。
<%=button_to " ", refresh_path(:task => task, format: :turbo_stream)%>
该方法被调用并正常工作,我已经检查了它没有涡轮流。refresh.turbo_stream.erb
的含量:
<%= turbo_stream.replace 'test', partial: 'refresh' %>
_refresh.html.erb
的含量
<h1>GoodBye</h1>
这是Turbo Stream工作原理x1c 0d1x的证明
Turbo Stream确实渲染了页面,但我得到了这样的输出。
我试着在控制器中写入响应,删除turbo_stream格式(它导致了另一个错误),玩路由,但没有得出任何结果。
我很抱歉,如果这个问题可能已经回答了,但我尝试了不同的选项,没有为我工作。请帮助!
1条答案
按热度按时间cbeh67ev1#
所以当你点击一个链接或按钮,其中有“.json”,“.xml”,或“.turbo_stream”或其他任何东西,Turbo 放弃,只是把你直接送到该页面,浏览器显示它可以最好的,它不知道该怎么做 turbo_stream,其中有
Content-Type: text/vnd.turbo-stream.html
,所以,在浏览器中的纯文本。要修复此问题,请删除
:format
:使用此按钮,Turbo 将发送正确的请求,并在此等待html或turbo_stream响应,您可以在请求报头中看到:
Accept: text/vnd.turbo-stream.html, text/html, application/xhtml+xml
如果服务器随后以 turbo_stream 格式响应:
Content-Type: text/vnd.turbo-stream.html
,则流指令将在当前页上执行。还有其他规则,但一次一步。要呈现适当的响应,请在控制器操作中使用
respond_to
方法: