Rails 6:使用 Channel Stream 更新 Html,用新文本替换文本
Posted
技术标签:
【中文标题】Rails 6:使用 Channel Stream 更新 Html,用新文本替换文本【英文标题】:Rails 6: Updating Html With Channel Stream, Replacing Text With New Text 【发布时间】:2020-11-25 07:15:16 【问题描述】:我在我的 rails 项目中设置了一个通道,用于处理传入的帖子请求并更新我创建的表。我有一个表格字段,我想在其中替换文本,并从发布请求中输入新文本。当我执行 $('#').append() 时,我会收到所有请求,但是,当我使用 $('#').replaceWith() 时,它会更新一次文本,但不会再更新一次。 replaceWith 不是最优方法吗?
// Called when there's incoming data on the websocket for this channel
received(data)
// will only change text once. example: post1 /*will not change it to later post data */
$('#my-partial-reference').replaceWith(data.content)
// will post all updates, but in continuous string ex : post1post2post3post4
// $('#my-partial-reference').append(data.content)
这是我的 _partial.html.erb:
<td id ="my-partial-reference"><%= call.callstatus %></td>
【问题讨论】:
【参考方案1】:所以我得到了这个工作,答案有点开箱即用。
我通过输入一个部分作为我的数据流的数据来让它工作。
# first i created a method to accept the partial
def post_recieved
ActionCable.server.broadcast "call_channel",
content: message_render(params["CallStatus"])
end
#here is a method I made to enter the data to my channel as a partial
def message_render(message)
my_model_ref = MyModel.first
my_model_ref.callstatus = message
#here i render my partial, but use the data from my temporary model
render(partial: 'view_sub_folder/my-partial-reference', locals: call: my_model_ref )
end
然后在我的频道中,我将旧部分替换为新部分
received(data)
$('#my-partial-reference').replaceWith(data.content)
据我所知,这应该行不通。但是我的表格是实时更新的,不会错过任何一个电话,有人知道为什么会这样吗?我有一些猜测,但我远非 Rails 专业人士。
【讨论】:
以上是关于Rails 6:使用 Channel Stream 更新 Html,用新文本替换文本的主要内容,如果未能解决你的问题,请参考以下文章