首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails Turbo流在行动前

Rails Turbo流在行动前
EN

Stack Overflow用户
提问于 2022-06-01 15:56:15
回答 1查看 780关注 0票数 1

我正在尝试Turbo 7。理解Hotwire引用的a操作在何处以及如何使用时有问题:

代码语言:javascript
复制
<turbo-stream action="before" target="dom_id">
  <template>
    Content to place before the element designated with the dom_id.
  </template>
</turbo-stream>

我正在使用Hotwire网站的例子。

show.html.erb:

代码语言:javascript
复制
<p style="color: green"><%= notice %></p>

<%= turbo_stream_from @room %>

<%= turbo_frame_tag "room" do %>
  <%= render @room %>

  <div>
    <%= link_to "Edit this room", edit_room_path(@room) %> |
    <%= link_to "Back to rooms", rooms_path, "data-turbo-frame": "_top" %>

    <%= button_to "Destroy this room", @room, method: :delete %>
  </div>
<% end %>

<div id="messages">
  <%= render @room.messages %>
</div>

<%= turbo_frame_tag "new_message", src: new_room_message_path(@room), target: "_top" %>

_message.html.erb

代码语言:javascript
复制
<p id="<%= dom_id message %>">
    <%= message.created_at.to_s(:short) %>: <%= message.content %>
</p>

new.html.erb

代码语言:javascript
复制
<h1>New message</h1>

<%= turbo_frame_tag "new_message", target: "_top" do %>
  <%= form_with(model: [ @message.room, @message ],
      data: { controller: "reset-form", action: "turbo:submit-end->reset-form#reset" }) do |form| %>
    <div class="field">
      <%= form.text_field :content %>
      <%= form.submit "Send" %>
    </div>
  <% end %>
<% end %>

<%= link_to "Back", @message.room %>

create.turbo_stream.erb

代码语言:javascript
复制
<%= turbo_stream.append "messages", @message %>

如何使用“前”操作将新消息插入列表的顶部?

EN

回答 1

Stack Overflow用户

发布于 2022-06-03 14:52:14

要在列表的顶部插入消息,您应该使用prepend而不是append操作。这将将<turbo-stream>的内容添加为<div id="messages">的第一个子级。

代码语言:javascript
复制
# prepend
<div id="messages">
  ... new message ...
  ... old messages ...
</div>

# append
<div id="messages">
  ... old messages ...
  ... new message ...
</div>

然而,beforeafter操作用于添加指定元素之外的内容。无论是在它之前还是之后。

代码语言:javascript
复制
# before
... new message ...
<div id="messages">
  ... old messages ...
</div>

# after
<div id="messages">
  ... old messages ...
</div>
... new message ...

文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72464848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档