Rails按ID获取多个

Bau*_*aub 11 ruby-on-rails

在Rails中,我有一个Product模型.有时候我需要同时获得多个products(但是列表是完全动态的,因此无法在Rails端完成).

所以,让我们说这个电话我需要在一次通话中获得产品1,3,9,24.这可能吗?如果是这样,我是否需要一个自定义路由,我应该在控制器中放置什么?

即做这样的工作吗? /products/1,3,9,24

Nic*_*gan 28

我认为你根本不需要改变路线.您只需要在控制器/模型中解析它们.

def show
  @products = Product.find params[:id].split(',')
end
Run Code Online (Sandbox Code Playgroud)

如果您再发送请求http://localhost/products/1,3,9,24,@ product应返回4条记录.


Ren*_*nra 7

我认为这是一个有限范围索引的请求,有点像搜索,所以我会这样做:

class ProductsController < ApplicationController
  def index
    @products = params[:product_ids] ? Product.find(params[:product_ids]) : Product.all
  end
end
Run Code Online (Sandbox Code Playgroud)

然后使用url数组链接到此:

<%= link_to 'Products', products_path(:product_ids => [1, 2, 3]) %>
Run Code Online (Sandbox Code Playgroud)

这会创建看起来有点类似的标准非索引url数组

product_ids[]=1&product_ids[]=2 ...
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.