Ruby on rails 渲染对象,将其用作搜索链接

Ruby on rails 渲染对象,将其用作搜索链接,ruby-on-rails,search,Ruby On Rails,Search,我对Rails还是相当陌生的。我已经开始掌握窍门了,但我现在想做的事我都做不到。我做了很多研究,关于制作搜索框的内容很多,但我想简化这个过程。因此,我有一个视图帮助器,可以执行以下操作: <% if @events.any? %> <ol class="events"> <%= render @events %> </ol> <% end %> 还有一个相关的搜索控制器,用来抓取结果并弹出一个新的页面,以及一条新的路线

我对Rails还是相当陌生的。我已经开始掌握窍门了,但我现在想做的事我都做不到。我做了很多研究,关于制作搜索框的内容很多,但我想简化这个过程。因此,我有一个视图帮助器,可以执行以下操作:

<% if @events.any? %>
  <ol class="events">
    <%= render @events %>
  </ol>
<% end %>
还有一个相关的搜索控制器,用来抓取结果并弹出一个新的页面,以及一条新的路线。我还没有尝试构建控制器和路由,因为我不太清楚它需要什么样子。我一直在阅读
link\u to
,我想我需要直接进行链接,但还是不确定它应该是什么样子。我准备好把头伸到显示器上了。想法


编辑:从下面的答案中得到启发的解决方案是使用城市和事件日期的两个连接字符串和
搜索url(params[:search1 event.city,:search2 event.date])
,在事件控制器中创建一个关联的搜索方法,在事件模型中调用
self.search
方法,和routes.rb中的“匹配”。该模型使用和执行了一个SQL查询,返回了我想要的结果,并使用一个简单的助手显示。

因此,您可以构建搜索,以便输入任意城市并返回所需的结果。这是第一步。搜索控制器操作将接受作为搜索字符串的参数。假设该参数被称为
query

因此,您有一个类似于
search\u控制器
的操作,该操作名为
search
,该操作使用
params[:query]
的值返回结果

一旦你有了这些,你就可以建立指向预定义搜索的链接,如下所示:

<%= link_to e.city, search_search_path(:query => e.city) %>
这将产生一个类似以下内容的url:

config.resource :search do
  get :search, :on => :collection
end
http://example.com/search/search?query=chicago
其中
/search/search/
映射到
search
控制器上的
search
操作,包括
query
参数

您还可以输入匹配规则(此处显示的Rails 3样式),以进一步缩短URL:

match "/search" => "search#search"
这将允许您拥有如下url:

http://example.com/search?query=chicago

…这将与前面的示例相同。

这为我指明了正确的方向。最后,我在事件数据模型中使用了“搜索”。search\u events\u controller不起作用,不断得到未定义的方法,但search\u url确实起作用,也许我为前者设置的路由是错误的?无论如何,这个答案确实有帮助,但我最终选择了一个几乎完全不同的解决方案。我应该接受这个答案并将解决方案编辑到OP中,还是继续做一个新的答案?啊,我的意思是把它作为
search\u search\u path
-我的错误(已更新)。您添加的
url
也应该有效。很高兴知道。用我的解决方案更新OP并接受您的答案。谢谢
http://example.com/search?query=chicago