Rails搜索表单

时间:2011-07-04 05:57:16

标签: ruby-on-rails

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

4 个答案:

答案 0 :(得分:5)

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

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

<%= 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

答案 1 :(得分:2)

有很多关于这方面的教程和事情:

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

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

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

  1. 处理搜索(包括activerecord内容或用于访问模型的任何技术)
  2. 设置搜索表单所需的一些变量
  3. 设置两条路线等......即使是基本的官方rails3教程也可以广泛覆盖。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

您可能想查看Ransack宝石。 https://github.com/activerecord-hackery/ransack