0

我正在构建我的第一个 Ruby on Rails 应用程序,我想以“Rails”的方式来完成它,使我的应用程序尽可能地 RESTful。

该应用程序围绕搜索功能展开,用户填写一个定义他们正在寻找的内容的表单,提交它,然后翻阅他们的结果,查看他们感兴趣的项目。根据我对 REST 的理解,听起来我应该将我的参数编码到我的结果页面的 URL(?)

如果我的基本路线是:

match "search" => "search#index"

我的搜索结果的基本路线是:

match "search/results" => "search#results"

为我的搜索实现路由/URL/参数的最佳方式是什么?解决方案必须:

  • 支持许多参数(30+),其中任何一个都可以是可选的。
  • 支持分页:可能会有很多结果。
  • 坚持“铁轨之路”!

Rails 专家的任何建议/提示都会非常有帮助,谢谢!

4

2 回答 2

1

对于分页:您可以使用类似will_paginatekaminari

关于搜索参数:Rails 会将请求的查询字符串中的任何内容放入params控制器和视图中可访问的变量中。

您正在尝试做的事情(命名 url 搜索和搜索/结果)并不真正符合“宁静的路线”。不过,这就是你所要求的。

scope :search do 
  get 'search' => 'search#index' 
  get 'search/results' => 'search#show' 
end

会产生

  search GET            /search(.:format)                search#index
  search_results GET    /search/results(.:format)        search#show

要保持安静,请尝试辨别您要搜索的内容...对于产品,结果将使用 显示Products#index

如果您想扩大搜索范围,我建议使用Search#newResults#index。后面的这些选项似乎更 RESTful。

于 2012-10-12T16:39:21.873 回答
0

正如您可能预期的那样,将这 30 个参数作为 url 参数传递可能不是最好的方法。
我会考虑为他们创建一个配置模型(和表),并专注于能够更新这个模型的表单。这将使在恕我直言中存储搜索、进行多次搜索、验证搜索变得更加容易。将此模型与实际模型结合使用,以进行搜索。

对于分页,正如 rthbound 所说,使用will_paginatekaminari

于 2012-10-12T16:45:42.080 回答