【问题标题】:Rails - Simple Search with multiple parametersRails - 具有多个参数的简单搜索
【发布时间】:2013-06-09 02:41:49
【问题描述】:

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

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

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

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

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

谢谢。

project.rb

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

【问题讨论】:

    标签: ruby-on-rails search


    【解决方案1】:

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

    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
    

    希望这会有所帮助。

    【讨论】:

    • 谢谢,我可以使用它了:where('projecttitle LIKE ? AND reviewed = ?', "%#{search}%", true) ...但是如果我想添加另一个 projectdescription LIKE ? 怎么办?会是where('projectdescription LIKE ? OR projecttitle LIKE ? AND reviewed = ?', "%#{search}%", "%#{search}%", true) 吗?
    【解决方案2】:

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

    项目.rb

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

    projects_controller.rb

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-15
      • 2015-05-08
      相关资源
      最近更新 更多