GET 请求从 turbo_frame_tag 中处理为 HTML 而不是 TURBO_STREAM
GET request processed as HTML rather than TURBO_STREAM from within turbo_frame_tag
我开始使用 hotwire/turbo 并设置好一切。
Turbo 流工作正常。
在index.html.erb内:
<h1>Tasks</h1>
<%= turbo_stream_from "tasks" %>
<div id="tasks">
<% @tasks.each do |task| %>
<%= render task %>
<% end %>
</div>
在_task.html.erb
之内
<%= turbo_frame_tag dom_id(task) do %>
<%= link_to 'Edit', edit_task_path(task) %>
<%= link_to 'Destroy', task, method: :delete, data: { confirm: 'Are you sure?' } %>
<hr>
<% end %>
当按预期按下销毁按钮时,rails 控制台显示:
Started DELETE "/tasks/41" for ::1 at 2021-12-14 18:40:32 +0000
Processing by TasksController#destroy as TURBO_STREAM
但是当按下编辑按钮时,rails 控制台显示:
Started GET "/tasks/41/edit" for ::1 at 2021-12-14 18:41:29 +0000
Processing by TasksController#edit as HTML
这意味着页面加载新页面,呈现 edit.html.erb 而不是仅更新 turbo_frame_tag 中的内容。
检查 DOM 时,编辑和销毁链接都在 turbo-frame 中:
<turbo-frame id="task_41">
<a href="/tasks/41/edit">Edit</a>
<a data-confirm="Are you sure?" rel="nofollow" data-method="delete" href="/tasks/41">Destroy</a>
<hr>
</turbo-frame>
所以我的问题是,为什么请求被处理为 HTML 而不是 TURBO_STREAM?
edit.html.erb 看起来像这样:
<h1>Editing Task</h1>
<%= turbo_frame_tag dom_id(@task) do %>
<%= render 'form', task: @task %>
<% end %>
<%= link_to 'Show', @task %> |
<%= link_to 'Back', tasks_path %>
非常感谢!
已解决:
在application.js中,我还有这行:
require("turbolinks").start()
我删除了这个,解决了这个问题。
我有同样的问题,我的应用程序没有要删除的 require("turbolinks").start()
行。
此外,我发现当删除该行时,每隔 link_to 将被处理为 turbo_stream
。 并且在应用程序的开发,需要一个 link_to
作为 HTML.
我开始使用 hotwire/turbo 并设置好一切。 Turbo 流工作正常。
在index.html.erb内:
<h1>Tasks</h1>
<%= turbo_stream_from "tasks" %>
<div id="tasks">
<% @tasks.each do |task| %>
<%= render task %>
<% end %>
</div>
在_task.html.erb
之内<%= turbo_frame_tag dom_id(task) do %>
<%= link_to 'Edit', edit_task_path(task) %>
<%= link_to 'Destroy', task, method: :delete, data: { confirm: 'Are you sure?' } %>
<hr>
<% end %>
当按预期按下销毁按钮时,rails 控制台显示:
Started DELETE "/tasks/41" for ::1 at 2021-12-14 18:40:32 +0000
Processing by TasksController#destroy as TURBO_STREAM
但是当按下编辑按钮时,rails 控制台显示:
Started GET "/tasks/41/edit" for ::1 at 2021-12-14 18:41:29 +0000
Processing by TasksController#edit as HTML
这意味着页面加载新页面,呈现 edit.html.erb 而不是仅更新 turbo_frame_tag 中的内容。
检查 DOM 时,编辑和销毁链接都在 turbo-frame 中:
<turbo-frame id="task_41">
<a href="/tasks/41/edit">Edit</a>
<a data-confirm="Are you sure?" rel="nofollow" data-method="delete" href="/tasks/41">Destroy</a>
<hr>
</turbo-frame>
所以我的问题是,为什么请求被处理为 HTML 而不是 TURBO_STREAM?
edit.html.erb 看起来像这样:
<h1>Editing Task</h1>
<%= turbo_frame_tag dom_id(@task) do %>
<%= render 'form', task: @task %>
<% end %>
<%= link_to 'Show', @task %> |
<%= link_to 'Back', tasks_path %>
非常感谢!
已解决:
在application.js中,我还有这行:
require("turbolinks").start()
我删除了这个,解决了这个问题。
我有同样的问题,我的应用程序没有要删除的 require("turbolinks").start()
行。
此外,我发现当删除该行时,每隔 link_to 将被处理为 turbo_stream
。 并且在应用程序的开发,需要一个 link_to
作为 HTML.