我们目前正在将我们的应用程序从Vue.js转移到hotire.当使用Turbo_frames和View Components时,我们遇到了一个非常奇怪的错误.
我们有一个用于聊天中消息列表的rio_frame_tag,然后是一个单独的表单,该表单点击控制器创建新消息,然后重新呈现MessagesComponents.
我们遇到的错误是,没有替换原始rio_framework的内容,而是渲染了新的rio_framework(更重要的是,它在文档的根目录中渲染,甚至不在正确的组件中.)
我已经判断了涡轮_帧id,它们都是正确的.?
版本 铁轨:7.1.3 涡轮轨:2.0.1
消息_组件.html.erb
<%= tag.turbo_frame(id: "some_id") do %>
<div class="space-y-3">
<% messages.each do |message| %>
<%= render Atoms::MessageComponent.new(message:) %>
<% end %>
</div>
<% end %>
new_Message_component.html.erb
<%= form_with(model: new_message, data: {turbo_frame: "some_id"}) do |f|%>.
<%= f.label :message%>
<%= f.hidden_field :owner_id, value: owner.id %>
<%= f.text_field :content %>
<%= f.submit "Send Message" %>
<% end %>
Messages.Controler.rb#创建
def create
message = current_user.messages.create(message_params)
render Atoms::MessagesComponent.new(messages: messages.owner.messages)
end
我判断了请求类型,是text/vnd.turbo-stream.html
.
我还验证了我们的页面上只有id some_id
的元素.
我们将不胜感激.
最新消息: 再补充一点,我现在注意到新渲染的组件不在html body标签内,这超级奇怪.