以下是News
模型中的范围:
scope :category, -> (category_names) { joins(:category).where('categories.name IN (?)', category_names)}
scope :tag, -> (tag_name) { joins(:tags).where('tags.name = ?', tag_name)}
这里是GET
请求:
localhost:3000/news?category[]=sit&tag_list=ipsum
[
{
"id": 8,
"tag_list": "ipsum",
"category": "sit"
},
{
"id": 9,
"tag_list": "",
"category": "sit"
}
]
我的index
行动:
news = News.filter(params.slice(:tag_list, :category, :days_ago))
我想获得满足条件的新闻 - 只显示那些有category="sit"
和tag_list="ipsum"
的新闻。
实现这一目标的最佳途径是什么?
答案 0 :(得分:0)
您应该简单地将范围链接在一起。在你的新闻控制器中:
'#options' => getOptions($form, $form_state),
答案 1 :(得分:0)
您可以简单地将范围链接为:
News.category(params[:category]).tag(params[:tag_list])