Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:搜索多个属性_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails:搜索多个属性

Ruby on rails Rails:搜索多个属性,ruby-on-rails,Ruby On Rails,我已经建立了一个简单的搜索模型,有四个可以搜索的属性;姓名、年龄、地点和性别。我遇到的问题是,我似乎找不到搜索多个属性的正确代码 例如,搜索“adam”时应生成名为adam的所有用户,而搜索伦敦时应显示来自伦敦的所有用户。我只能单独搜索一个属性(名称),因此如果我键入“london”,它将显示一个空白结果页 /people/index.html.erb(搜索表单) 下面的代码运行良好 where('name LIKE ? OR location LIKE ?', "%#{search}%","%

我已经建立了一个简单的搜索模型,有四个可以搜索的属性;姓名、年龄、地点和性别。我遇到的问题是,我似乎找不到搜索多个属性的正确代码

例如,搜索“adam”时应生成名为adam的所有用户,而搜索伦敦时应显示来自伦敦的所有用户。我只能单独搜索一个属性(名称),因此如果我键入“london”,它将显示一个空白结果页

/people/index.html.erb(搜索表单)


下面的代码运行良好

where('name LIKE ? OR location LIKE ?', "%#{search}%","%#{search}%")

@meagar,我无法理解这一简单的代码行是如何“超出堆栈溢出的范围”的

where('name LIKE ? OR location LIKE ?', "%#{search}%","%#{search}%")

@meagar,我无法理解这一简单的代码行是如何“超出堆栈溢出的范围的”。

您可以检查gem以解决您的问题,它将搜索引擎平台集成到Rails中,是Rails应用程序的一个经过战斗验证的解决方案。在我公司的网站上,我们使用solr搜索房屋、交通零售商和旅游。这对你的项目来说可能有点沉重,但如果你正在寻找一个强大的解决方案,那么Sunspot肯定会是其中之一。

你可以检查gem以解决你的问题,它将搜索引擎平台集成到Rails中,并且是Rails应用程序的一个经过战斗验证的解决方案。在我公司的网站上,我们使用solr搜索房屋、交通零售商和旅游。这对你的项目来说可能有点沉重,但如果你正在寻找一个强大的解决方案,那么太阳黑子肯定会是其中之一。

修改你的
search
方法,让它接受一个散列字段来搜索。为您编写这篇文章超出了堆栈溢出的范围。请至少尝试自己实现它,如果遇到问题,请发布您的进度。我尝试了许多不同的方法来实现此功能,包括七到八个编写搜索函数的不同教程,每次它都会抛出错误或崩溃,但也不会显示正确的结果。我尝试了很多不同的方法来添加多个搜索字段,但是找不到正确的语法。。因此,我之所以在这里发布,是因为我真的被卡住了。修改你的
search
方法,让它接受要搜索的字段散列。为您编写这篇文章超出了堆栈溢出的范围。请至少尝试自己实现它,如果遇到问题,请发布您的进度。我尝试了许多不同的方法来实现此功能,包括七到八个编写搜索函数的不同教程,每次它都会抛出错误或崩溃,但也不会显示正确的结果。我尝试了很多不同的方法来添加多个搜索字段,但是找不到正确的语法。。因此,我之所以在这里发帖,是因为我真的被卡住了。
def index
  @people = Person.search(params[:search], params[:id])
end
where('name LIKE ? OR location LIKE ?', "%#{search}%","%#{search}%")