在 Rails 中,我有一个Product
模型。有时我需要同时获取多个products
(但列表是完全动态的,因此无法在 Rails 端完成)。
所以,假设对于这个电话,我需要在一个电话中获得产品 1、3、9、24。这可能吗?如果是这样,我是否需要为此自定义路由以及在控制器中放入什么?
即做这样的事情吗?/products/1,3,9,24
在 Rails 中,我有一个Product
模型。有时我需要同时获取多个products
(但列表是完全动态的,因此无法在 Rails 端完成)。
所以,假设对于这个电话,我需要在一个电话中获得产品 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 条记录。
我会认为这是一个在有限范围内建立索引的请求,有点像搜索,所以我会这样做:
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 ...
希望有帮助。
Product.where(:id => params[:ids].split(','))