2011-07-04 118 views
5

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

回答

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 

,并在您的搜索视图:

<%[email protected] do |user| %> 
    Name: <%=user.name %> 

    <%- user.achievements.each do |achievement| %> 
    <%= achievement.name %> 
    <%- end %> 
<%- end %> 

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

class User << ActiveRecord::Base 
    has_many :achievements 

end 
2

有很多教程和事物的这个如:

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

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

这是一个非常广泛的不同的事情,你可以做到这一点。基本上,你必须把一些代码在控制器:

  1. 它处理搜索(包括ActiveRecord的东西,或任何技术,你用它来访问你的模型)
  2. 其中设置一些必要的变量为搜索表单

设置两条路线等...它的广泛和完全覆盖,即使是基本的官方rails3教程。

+1

谢谢,但该教程没有给出一个非常明确的解释,至少对我来说,它需要你使用formtastic。感谢谷歌搜索,但如果它可以分解更容易让我理解,再次,我会很感激。 – SalsaSalsa

+0

有没有任何翻译的链接? –

+0

@AliQanavatian你可以简单地点击右侧的英语作为语言 – fyr

0

这是基于searchlogic的应用是非常有用的,你可以搜索通过任何你想要的

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