Ruby on rails Rails—显示一组结果的最佳方式

Ruby on rails Rails—显示一组结果的最佳方式,ruby-on-rails,Ruby On Rails,我有一个酒店模型,模型有一个位置字段 我希望能够筛选酒店,以便它只显示用户按位置搜索的结果 e、 g.当用户搜索“马德里”时,页面将重定向到马德里的酒店列表 最简单的方法是什么 谢谢。最简单的解决方案是按城市查询数据库过滤: city_hotels = Hotel.where(city: params[:city]) 我建议只使用where子句。比如: Hotel.where(location: 'Madrid') 因为这映射到一个SQLSELECT语句,所以它让您的数据库在检索数据之前完成

我有一个酒店模型,模型有一个位置字段

我希望能够筛选酒店,以便它只显示用户按位置搜索的结果

e、 g.当用户搜索“马德里”时,页面将重定向到马德里的酒店列表

最简单的方法是什么


谢谢。

最简单的解决方案是按城市查询数据库过滤:

city_hotels = Hotel.where(city: params[:city])

我建议只使用where子句。比如:

Hotel.where(location: 'Madrid')
因为这映射到一个SQLSELECT语句,所以它让您的数据库在检索数据之前完成工作,并且它将为您提供一个要处理的对象数组。如果您有多个条件,则可以使用字符串设置将它们串在一起,如:

Hotel.where('location LIKE ? AND name LIKE ?', '%Madrid%', '%Hilton%')
这将使您能够灵活地创建自己的查询,而不会给API服务器带来太多压力。例如,如果您使用all或findAllBy,那么Rails将把所有的酒店加载到API层,然后逐一检查每个酒店,这需要处理时间和CPU。但是,在这些情况下使用where可以使设计用于执行此类查询的数据库处理的工作最小化API CPU使用,从而使更多人的API请求能够通过


作为补充说明,如果您使用的是一个很少更改的查询,就像城市附近的所有酒店一样,那么您可能需要研究缓存答案以节省处理时间。例如,酒店不会在一夜之间弹出,因此将马德里的酒店列表缓存4-8小时意味着您只处理一次请求。

请阅读一些基本教程,这样就不是“编写我的代码而不是我”服务。我已经读了很多,谢谢。这个应用程序已经有很多功能了——我只是在努力解决这个特殊的问题,不管它看起来多么基本。如果我有一个位置模型,那么我会发现这相当容易。尽管如此,我还是很抱歉打扰了你。这很有效,这是我最初的想法;然而,它随后会与show方法混淆。我应该定义一个额外的路线来绕开这个问题吗?您可以定义额外的方法和额外的路线,并使用您用于显示的相同视图。或者对于:索引,也应该有效。嘿,谢谢你的深入回答!我真的很感激。通过在索引操作中使用.where子句,我确实在一定程度上成功地使其工作。定义新操作以显示这些酒店以避免修改索引的最佳方式是什么?再次感谢!我建议设置一个控制器,为您存储逻辑。然后可以将端点映射到控制器方法。提供了一个很好的示例,说明如何设置显示数据的控制器。