我在 Rails 应用程序中设置了一个 Turbo 框架,用户可以导航。问题在于,当用户在框架内导航时,turbo 框架需要一些时间来更新,在此期间它会显示加载状态。现在,我希望如果这种情况没有发生,它会显示旧框架,直到新框架准备好,然后替换旧框架,以便用户永远不会看到加载状态。那可能吗?我想这样做,因为这样框架的内容就不会像现在导航时那样“突然移动”。
这是我的(简化的)代码:
index.html.erb
<%= turbo_frame_tag "posts", src: search_path do %>
Loading results...
<% end %>
_posts.html.erb
<%= turbo_frame_tag "posts" do %>
<%= link_to "Next Page", search_path(page: (params[:page]&.to_i || 0) + 1) %>
<% posts.each do |post| %>
<div>
<p><%= post.name %></p>
<p><%= post.body %></p>
</div>
<% end %>
<% end %>
posts_controller.rb
class PostsController < ApplicationController
...
def search
posts = Post.all
posts = posts.offset((params[:page]&.to_i || 0) * 50).limit(50)
render(partial: "posts", locals: { posts: posts })
end
...
end
提前致谢!
我想通了。问题是我正在使用 Feather Icons Library,并且该库要求使用 Javascript 将图标放置在视图中。由于 Javascript 在视图渲染后需要几毫秒的时间,因此图标才会加载,从而稍微改变视图的布局。再次感谢您的有用建议!