在Rails中,我有一个Product
模型。有时我需要同时获得多个products
(但列表是完全动态的,因此无法在Rails端完成。)
所以,让我们说这个电话我需要在一次通话中获得产品1,3,9,24。这可能吗?如果是这样,我是否需要一个自定义路由以及我应该在控制器中放置什么?
即。做这样的工作吗? /products/1,3,9,24
答案 0 :(得分:25)
我认为您根本不需要改变路线。您只需要在控制器/模型中解析它们。
def show
@products = Product.find params[:id].split(',')
end
如果您随后向http://localhost/products/1,3,9,24
发送请求,则@products应返回4条记录。
答案 1 :(得分:6)
我认为这是一个有限范围索引的请求,有点像搜索,所以我会这样做:
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 ...
希望有所帮助。
答案 2 :(得分:3)
Product.where(:id => params[:ids].split(','))