利用 Turbo 和 Stimulus 提升 Web 应用交互性
1. 初始控制器与问题发现
在开发过程中, FavoritesController
最初的实现如下:
class FavoritesController < ApplicationController
def index
end
def create
Favorite.create(user: current_user, concert_id: params[:concert_id])
render(partial: "favorites/list")
end
def destroy
@favorite = Favorite.find(params[:id])
@favorite.destroy
render(partial: "favorites/list")
end
private
def favorite_params
params.require(:concert_id)
end
end
不过,点击“Make Favorite”或“Remove Favorite”按钮时,仅更新了“Favorites”部分,音乐会显示行并未改变。之前按钮文本能从“Favorite”变为“Unfavorite”,现在按钮标签和操作都不再变化。我们期望请求能以一种让 Turbo 更新“Favorites”显示和音乐会内联显示的方式响应,同时保持页面其他部分不变,这就需要用到 Turbo Streams。