0

コントローラーのルートを特定せずに、リクエスト URL に含まれるすべての ID をコントローラーで使用するのが好きです。

私のルート:

...
resources :users do      
  resources :properties
end
...

私のコントローラーは、標準の足場コントローラーです。index メソッドを見てみましょう。

def index
  properties = Properties.all
  respond_to do |format|
    format.json { render json: properties }
  end
end

def show
    @property = Property.find(params[:id])
    respond_to do |format|
       format.json { render json: property }
    end
end

/users/10/propertiesのようなルートの問題は、10 の user_id を取得せず、それを使用してクエリを作成していないことです。サブセットの代わりにすべてのプロパティを照会します。

また、他のユーザーのプロパティを表示するためにURLを簡単に変更できるようにします。「id」をいじるだけです。「user_id」は無視されるため、一致する「user_id」+「id」を見つける必要はありません。

もちろん、それをコードで明示的に表現することはできますが、それではルート固有になってしまいます。ネストされていないルートのコンテキストでもコントローラーを使用するのが好きです。

それを処理するための標準的なレシピはありますか?"_id" で終わるすべてのパラメータを見てみませんか?

4

1 に答える 1

1

https://github.com/josevalim/inherited_resources をチェックしてください

それ以外の場合は、インデックス アクションでクエリ パラメータが存在するかどうかを確認し、存在する場合はそのパラメータをクエリする必要があります (Properties.where(user_id: params[:user_id] )

于 2013-05-07T00:03:58.973 に答える