11

RailsにはProductモデルがあります。products同時に複数を取得する必要がある場合もあります(ただし、リストは完全に動的であるため、Rails側では実行できません)。

したがって、この呼び出しでは、1回の呼び出しで製品1、3、9、24を取得する必要があるとします。これは可能ですか?もしそうなら、私はこれのためにカスタムルートが必要ですか、そして私は私のコントローラーに何を入れますか?

つまり、このようなものは機能しますか?/products/1,3,9,24

4

3 に答える 3

28

ルートをまったく変更する必要はないと思います。コントローラー/モデルでそれらを解析する必要があります。

def show
  @products = Product.find params[:id].split(',')
end

次に にリクエストを送信するとhttp://localhost/products/1,3,9,24、@products は 4 つのレコードを返す必要があります。

于 2012-05-25T19:36:21.787 に答える
9

これは、検索のような限られた範囲でインデックスを作成するためのリクエストであると考えているので、次のようにします。

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]) %>

これにより、次のような標準のインデックスなしの url 配列が作成されます

product_ids[]=1&product_ids[]=2 ...

それが役立つことを願っています。

于 2012-05-25T20:31:27.323 に答える
4
Product.where(:id => params[:ids].split(','))
于 2012-05-25T19:32:34.583 に答える