Rails搜索表单

我正在创建一个跟踪用户和成就的应用程序(想想,xbox live等)。这些表通过连接表链接。 我希望在我的索引上有一个搜索表单,用户可以输入用户名,新页面会加载用户已获得的所有成就的列表。 我不完全确定如何在索引上设置此搜索表单,以实际搜索用户表并在新页面上返回结果。 任何帮助将不胜感激。 如果您需要更多信息,我会很乐意提供。

这里有一些骷髅代码可以帮助您从我所说的内容开始。 我希望这很有用。

对于搜索位,您可以在索引视图中执行以下操作:

<%= form_for User.new, :url => "search" do |f| %> <%= f.label :name %> <%- f.text_field :name %> <%- end %> 

在你的控制器中:

 def search q = params[:user][:name] @users = User.find(:all, :conditions => ["name LIKE %?%",q]) end 

并在您的搜索视图中:

 <%-@users.each do |user| %> Name: <%=user.name %> <%- user.achievements.each do |achievement| %> <%= achievement.name %> <%- end %> <%- end %> 

当然,您需要确保正确链接用户和成就模型:

 class User << ActiveRecord::Base has_many :achievements end 

有很多关于此的教程和事情,例如:

http://blog.devinterface.com/2010/05/how-to-model-a-custom-search-form-in-rails/

看看Rails3中的每个基本解释都是从他们提供的初始教程开始,向您解释如何设置新的控制器/模型。 这个例子只是解释同一个问题的数千个中的一个。

为实现这一目标,您可以做很多不同的事情。 基本上你必须在控制器中放入一些代码:

  1. 它处理搜索(包括activerecord内容或用于访问模型的任何技术)
  2. 它设置了搜索表单所需的一些变量

设置两条路线等…即使是基本的官方rails3教程,也要广泛而完全覆盖。

这是一个基于searchlogic的应用程序是非常有用的,你可以搜索任何你想要的

  https://github.com/railscasts/176-searchlogic