我正在创建一个跟踪用户和成就的应用程序(想想,xbox live等)。这些表通过连接表链接。我希望在我的索引上有一个搜索表单,用户可以输入用户名,新页面会加载用户已获得的所有成就列表。我不完全确定如何在索引上设置此搜索表单,以实际搜索用户表并在新页面上返回结果。任何帮助将不胜感激。如果您需要更多信息,我会很乐意提供。
答案 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中的每个基本解释都是从他们提供的初始教程开始,向您解释如何设置新的控制器/模型。这个例子只有数千人解释同样的问题。
为实现这一目标,您可以做很多不同的事情。基本上你必须在控制器中放入一些代码:
设置两条路线等......即使是基本的官方rails3教程也可以广泛覆盖。
答案 2 :(得分:0)
这是一个基于searchlogic的应用程序非常有用,你可以按你想要的任何方式进行搜索
https://github.com/railscasts/176-searchlogic
答案 3 :(得分:0)
您可能想查看Ransack宝石。 https://github.com/activerecord-hackery/ransack