【发布时间】:2022-07-19 18:33:06
【问题描述】:
我正在尝试更新页面中的 div。
<div id="post_hidden_fields"></div>
我将控制器添加到 turbo_stream 格式代码中以更新此 div
respond_to do |format|
format.turbo_stream do
render turbo_stream: turbo_stream.update("post_hidden_fields",
partial: "home/update_post_form", locals: {post_type: params[:post_type], url: params[:url]})
end
format.html {}
end
我的 home/update_post_form 部分看起来像这样:
<div id="post_hidden_fields">
<input autocomplete="off" type="hidden" name='<%= "post[#{post_type}]" %>' value="<%= url %>">
当它运行时,我查看我的网络选项卡,对该方法的响应是:
<turbo-stream action="update" target="post_hidden_fields">
<template>
<div id="post_hidden_fields">
<input autocomplete="off" type="hidden" name='post[photo]' value="SOME_URL">
</div>
</template>
似乎 turbo-stream 部分运行正常,但不知何故 dom 不会改变。我仍然让我的 post_hidden_fields div 为空,并且没有保留我试图添加到其中的隐藏输入。
【问题讨论】:
-
您不应该使用
turbo_stream.update,因为您要替换整个元素而不仅仅是更新其内容,因此您应该使用turbo_stream.replace。
标签: ruby-on-rails ruby hotwire-rails