从 Turbolinks 升级到 Turbo 后,先升级后补课中,2 个常见功能的处理:
<%= turbo_frame_tag "posts_#{@posts.current_page}" do %>
  <%= render "post_list" %>
  <% unless @posts.last_page? %>
    <% turbo_frame_tag "posts_#{@posts.next_page}", loading: :lazy, src: url_for(page: @posts.next_page) do %>
      <div>loading...</div>
    <% end %>
  <% end %>
<% end %>
遗留问题:某些场景下拉到底部显示加载中的等待体验不满足客户需求,需要在下拉到一半时就预先加载下一页,还没有想到处理方法。
<%# index.html.erb %>
<%= link_to "edit", [:edit, post], data: {turbo_frame: "modal_frame_id" }%>
<%= turbo_frame_tag "modal_frame_id" , target: "_top", class: "modal_frame" %>
<%# edit.html.erb%>
<%= turbo_frame_tag "modal_frame_id" %>
  <div class="modal">
    <div>modal content</div>
    <%= button_tag "Cancel", data: {dismiss: "modal"}, onclick="this.closest('.modal_frame').src='';this.closest('.modal').remove();" %>
  </div>
<% end %>
遗留问题:由于是 get 请求,重复点击时候如何重新渲染没解决,通过 src 清空临时处理;这里 dismiss 自动关闭没生效,通过 onclick 临时 remove 内容;想知道正确的处理方法。