0

假设我们有一个有 2 个框架的页面,如下所示:

+---+   +-----------+
| 1 |   |     2     |      1: <turbo-frame id="sidebar">
+---+   +-----------+      2: <turbo-frame id="main">

并且页面是通过Books#index动作呈现的。

问:我们如何main在对应于控制器操作的 GET 请求上使用 Hotwire 仅更新涡轮帧index


这是我尝试的方法(简化):

# app/view/books/index.html.erb

<%= turbo_frame_tag 'sidebar' do %>
  <%= render partial: 'books/sidebar' %>
<% end %>

<%= turbo_frame_tag 'main' do %>
  <%= render partial: 'books/main' %>
<% end %>
# app/controllers/books_controller.rb

def index
  respond_to do |format|
    format.turbo_stream {
      render turbo_stream: turbo_stream.replace('main', partial: 'books/main')
    }
    format.html
  end
end

BooksController当我单击链接对主要部分进行分页时,将向的操作发送一个 GET 请求index,并带有一个名为 的参数page。端点看起来像/books?page=2.

然后,books 控制器将整个books/index.html.erb视图作为 HTML(包括侧边栏)发回,从而更新帧 1 和 2,这不是我想要的。

我想收到<turbo-frame id='main'>as vnd.turbo-stream,保持侧边栏不变并更新主要部分。

如果需要,我可以提供一个确切的例子或更多细节。

4

0 回答 0