Sorting is a great candidate for Turbo Frames: clicking “Newest” shouldn’t reload your whole page shell. I wrap the list in a frame (e.g., id='results') and make sort links target that frame. The controller reads params[:sort] and applies an order scope. This keeps sorting as normal links (so it works without JS), but in Turbo-enabled browsers it updates only the list region. I typically pair this with data-turbo-action='replace' to avoid polluting history when users click different sort options rapidly. The key is to make the response include the same results frame wrapper. This is also easy to test and easy to extend with additional sort options later.