Railsでは、Product
というモデルがあります。時には同時に複数のproducts
を取得する必要があります(リストは完全に動的なので、Rails側では実行できません)。複数のRailsがIDで取得する
この呼び出しでは、1回の呼び出しで1,3,9,24の製品を取得する必要があるとします。これは可能ですか?もしそうなら、私はこのためのカスタムルートが必要ですか?コントローラには何を入れますか?
つまり、この作品のようなものですか? /products/1,3,9,24
Railsでは、Product
というモデルがあります。時には同時に複数のproducts
を取得する必要があります(リストは完全に動的なので、Rails側では実行できません)。複数のRailsがIDで取得する
この呼び出しでは、1回の呼び出しで1,3,9,24の製品を取得する必要があるとします。これは可能ですか?もしそうなら、私はこのためのカスタムルートが必要ですか?コントローラには何を入れますか?
つまり、この作品のようなものですか? /products/1,3,9,24
私はあなたが経路を全く変更する必要はないと思います。コントローラ/モデルで解析するだけでよいはずです。
def show
@products = Product.find params[:id].split(',')
end
あなたがhttp://localhost/products/1,3,9,24
にリクエストを送信した場合、@productsは4つのレコードを返す必要があります。
これはうまくいきます! :)ありがとう。 – Baub
ありがとうございました! –
Product.where(:id => params[:ids].split(','))
これは動作しますが、ルートは必要ありません。 – Baub
ワイルドカードはすべてを捕捉するので、/ products/1,2,3,4/editにリクエストを送信すると、params [:ids]には「1,2,3,4/edit」が含まれます –
あなたが最後にそれを置いても大丈夫だと知っています –
私は種類の検索のように、限られた範囲でのインデックスにこの要求を検討しますので、私はどうなる:
class ProductsController < ApplicationController
def index
@products = params[:product_ids] ? Product.find(params[:product_ids]) : Product.all
end
end
をしてから、URLアレイとこれにリンクされています
<%= link_to 'Products', products_path(:product_ids => [1, 2, 3]) %>
これは一種の
product_ids[]=1&product_ids[]=2 ...
役に立てば幸いように見える標準的な非インデックス付きのURLの配列を作成します。
完全に同意します。このリクエストを 'index'アクションで処理することは、おそらくコントローラロジックの残りの部分でうまくいくでしょう。 – colllin
コントローラー/リクエストレベル、またはモデル/データベースレベルについて話していますか? – x1a4
もう少し説明しなければならないでしょう。 「Rails側ではできない」とはどういう意味ですか? – tybro0103
@ x1a4はい、コントローラ/要求レベル。私を編集させてください。 – Baub