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中的每个基本解释都是从他们提供的初始教程开始,向您解释如何设置新的控制器/模型。 这个例子只是解释同一个问题的数千个中的一个。
为实现这一目标,您可以做很多不同的事情。 基本上你必须在控制器中放入一些代码:
- 它处理搜索(包括activerecord内容或用于访问模型的任何技术)
- 它设置了搜索表单所需的一些变量
设置两条路线等…即使是基本的官方rails3教程,也要广泛而完全覆盖。
这是一个基于searchlogic的应用程序是非常有用的,你可以搜索任何你想要的
https://github.com/railscasts/176-searchlogic
您可以查看Ransackgem。 https://github.com/activerecord-hackery/ransack