在ReSTful rails模型中搜索操作

fil*_*ppo 3 rest ruby-on-rails ruby-on-rails-3

所以,我对Rails很陌生,并且仍在努力完成这些原则.我想和大多数人一样,我已经开始创建那个基本的CRUD了.好的.完成.

现在我想要一个新动作:搜索.事实证明,它不是7个休息神圣(!)动作之一(如果做对了).虽然我知道我可以实现新的自定义操作并为其提供资源,但我会在一些地方阅读,尽可能地坚持使用标准操作.好的.什么是正确的方法?

这个人一样的一些消息来源建议考虑我的场景名词,在这种情况下我似乎需要一个"搜索"控制器......?它只是没有让我相信我必须创建一个全班,而我通常def search只是为了让它保持ResTful.

我弄错了什么?这里的常见解决方案是什么?

谢谢.

Tom*_*son 5

REST是一个概念,而不是宗教:-).但核心动词是GET/POST/PUT/DELETE,它们映射到相关的HTTP动词.URL中的内容通常是对此的反映,并且(这更像是Rails哲学)遵循约定可以使一切变得更加容易.使用通用轨道(例如脚手架)获得的URL在几个方面并不是特别理想,但它们可以工作,您可以更改它们.

所以,是的,对于搜索(假设它开始简单,例如在单个模型中查找记录,比如说Product)那么你可以使用像这样的查询字符串进行GET

def search
  @results = Product.where("name ILIKE ?", params[:query])
  ...
end
Run Code Online (Sandbox Code Playgroud)

这会导致像这样的网址/product/search?query="foo"- 没错.