Rails根据控制器中的属性过滤产品列表

时间:2014-08-07 19:16:50

标签: ruby-on-rails ruby

Rails新手在这里。这个具体问题之前可能已被问过,如果不是在这里,那么在其他一些网站上,但经过四处寻找后,我找不到任何有用的东西,因为我缺乏描述我想要完成的内容的术语。我很抱歉,如果它是微不足道的。

基本上我有一个带有脚手架Item的新创建的Rails项目(由rails g scaffold Item [...attributes...]生成),我想创建一个额外的页面,类似于索引页面,但不是显示所有的我希望过滤项目的项目。因此,对于索引页面,控制器文件中的部分看起来像这样

def index
 @items = Item.all
end 

并且我想知道如何为我的其他页面(称为index2)使用某种类似于find的方法的某种控制器只抓取具有某种特定的Items属性,例如是"red"中的color

def index2
  @items = Item.find(color: "red") #all items that have red as their color attribute
end                                #are assigned to @items

我该怎么做?我在哪里可以找到更多操作(all()firstsecond,......除外)?感谢您的耐心等待。

1 个答案:

答案 0 :(得分:1)

您可以向ItemsController添加操作

def red_items
  @items = Item.where(color: "red")
end

您可以使用所有过滤器的位置

您必须向red_items.html.erb添加一个名为/app/views/items的视图,以便控制器自动呈现。如果要使用索引模板,则只需在新操作中显式呈现模板

def red_items
  @items = Item.where(color: "red")
  render :template => "index"
end

以下是Active Record Query Interface的链接,您可以在其中找到所有可能的查询方法