我想用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 %>