Rails - 使用多个参数进行简单搜索

时间:2013-06-09 02:41:50

标签: ruby-on-rails search

对于我的应用程序,我已经通过教程HERE实现了对项目的简单搜索。

我正在搜索项目,但我想只搜索某个属性的项目。

如果您在下面看到,我有两个项目:

    1) where('projecttitle LIKE ?', "%#{search}%")
    2) where(:reviewed => true)

第一个是正在搜索的表中的列。但我想只搜索属性" review == true" 。我该怎么做?

感谢。

project.rb

def self.search(search)
  if search
    where('projecttitle LIKE ?', "%#{search}%")
    # where(:reviewed => true)
  else
    find(:all)
  end
end

2 个答案:

答案 0 :(得分:0)

我不确定你的模型中是否真的需要这样的搜索方法,除非它在别处使用。话虽如此,我认为控制器中的以下内容会起作用。注意:我没有查看过该教程。

def YOUR_CONTROLLER_ACTION_NAME_HERE
  if params[:search]
    @projects = Project.where("reviewed = ? and projecttitle LIKE %?%", true, params[:search])
  else
    @projects = Project.all
   end
end

希望这会有所帮助。

答案 1 :(得分:0)

添加以下内容并使其正常工作。

project.rb

scope :approved,  where(:projectreviewed => true)

projects_controller.rb

def index
  @projects = Project.search(params[:search]).approved.page(params[:page]).per_page(8)
end