0

「リスト」と「クエリ」の 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 を伝えるきれいな方法はありますか?

4

1 に答える 1

1

http プロトコルの制約内にありません。

于 2013-07-04T18:37:55.043 に答える