【发布时间】:2011-07-04 05:57:15
【问题描述】:
我正在创建一个跟踪用户和成就的应用程序(think、xbox live 等)。这些表通过连接表链接。我想在我的索引上有一个搜索表单,让用户输入用户名,并加载一个新页面,其中包含用户获得的所有成就的列表。我不完全确定如何在索引上设置此搜索表单,以实际搜索用户表并在新页面上返回结果。任何帮助将不胜感激。如果您需要更多信息,我很乐意提供。
【问题讨论】:
标签: ruby-on-rails
我正在创建一个跟踪用户和成就的应用程序(think、xbox live 等)。这些表通过连接表链接。我想在我的索引上有一个搜索表单,让用户输入用户名,并加载一个新页面,其中包含用户获得的所有成就的列表。我不完全确定如何在索引上设置此搜索表单,以实际搜索用户表并在新页面上返回结果。任何帮助将不胜感激。如果您需要更多信息,我很乐意提供。
【问题讨论】:
标签: ruby-on-rails
这里有一些框架代码,可以根据我认为你所说的内容来帮助你开始。我希望这很有用。
对于搜索位,您可以在索引视图中执行以下操作:
<%= 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 中的每个基本解释,从他们提供的 Initial Tutorial 开始,向您解释如何设置新的 Controller/Model。该示例只是解释同一问题的数千个示例之一。
您可以做很多不同的事情来实现这一目标。基本上你必须在控制器中放一些代码:
设置两条路线等...它的范围很广,甚至在基本的官方 rails3 教程中也完全涵盖。
【讨论】:
这是一个基于搜索逻辑的应用程序,非常有用,您可以根据需要进行搜索
https://github.com/railscasts/176-searchlogic
【讨论】:
您可能想查看 Ransack gem。 https://github.com/activerecord-hackery/ransack
【讨论】: