Hotwire/Turbo with rails : paging



我想用turbo实现一个简单的分页系统

<h1> Title </h1>
<%= turbo_frame_tag "page" do %>
current page : <%= params[:page] %>
<% end %>
<p> other content </p>
<%= turbo_frame_tag "next" do %>
<a href="?page=<%= params[:page].to_i + 1 %>">
Next page
</a>
<% end %>

和GET?page=1
返回(当params[:page]存在时,控制器呈现部分)

<%= turbo_frame_tag "page" do %>
current page : <%= params[:page] %>
<% end %>
<%= turbo_frame_tag "next" do %>
<a href="?page=<%= params[:page].to_i + 1 %>">
Next page
</a>
<% end %>

但只有#next元素获得重新加载,
当我将target: "page"添加到#next时,只有第一个涡轮框架获得重新加载

我们可以在turbo_frame_tag中放置多个目标吗?或者正确的方法是什么

提前谢谢你

到目前为止,turbo frame似乎只被一帧(来自响应)所取代。如果你想替换多个帧,你可以使用turbo stream

所以你可以将分页next帧移动到page帧中,只响应page帧:

<%= turbo_frame_tag "page" do %>
current page : <%= params[:page] %>
<p> other content </p>

<a href="?page=<%= params[:page].to_i + 1 %>">
Next page
</a>
<% end %>

或者使用turbo-stream

<h1> Title </h1>
<%= turbo_frame_tag "page" do %>
current page : <%= params[:page] %>
<% end %>
<p> other content </p>
<%= turbo_frame_tag "next" do %>
<%= button_to "next", query_page_path(page: params[:page].to_i + 1) %>
<% end %>
# pages_controller
def query
# query pages
respond_to do |format|
format.turbo_stream { }
end
end
# pages/query.turbo_stream.erb
<%= turbo_stream.replace "page" %>
<% end %>
<%= turbo_stream.replace "next" %>
<% end %>

参考:https://github.com/hotwired/turbo/issues/56

<%= turbo_frame_tag "page", target "next" do %> 
current page 
<%= params[page] %> 
<% end %> 
<%= turbo_frame_tag "next" do %> 
<a href="?page=<%= params[page].to_i + 1 %>">Next page</a> 
<% end %>

最新更新