「リスト」と「クエリ」の 2 つのメソッドを持つ Rails アプリを作成しています。簡略版は次のとおりです。
class ApplicationController < ActionController::Base
def query
# query based on user-form text in params[:q]
@list = Product.where(Product.arel_table[:description].matches("%#{params[:q]}%"))
if @list.count == 1
redirect_to :action => 'list', :id => @list[0].id
end
end
def list
@item= Product.find(params[:id])
end
end
最も一般的なユーザー パターンは、単一の製品を生成する検索を入力することです。これが発生した場合、URLを安らかな場所にリダイレクトする必要があります
http://myurl/list/:id
それよりも
http://myurl/query?q=search-query.
しかし、上記のコードでは、データベースに 2 回アクセスして同じレコードを取得し、クエリごとに 2 つの http 要求/応答を作成しています。世界の終わりではありませんが、もっと良い方法があるかどうか疑問に思っていました. (クエリを実行すると、既にモデル オブジェクトが手元にある)
クエリ アクションからリスト アクションのビューをレンダリングし、追加の要求/応答なしでブラウザに新しい URL を伝えるきれいな方法はありますか?