Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails Search Form

I'm creating an application that tracks users and achievements (think, xbox live, etc.) These tables are linked via a join table. I would like to have a search form on my index that lets users type in a users name and a new page is loaded with a list of all achievements that user has earned. I'm not entirely sure how to set up this search form, on the index, to actually search the user table and return the results on a new page. Any help would be greatly appreciated. If you require more information then I'll be happy to provide it.

like image 811
SalsaSalsa Avatar asked Jul 04 '11 05:07

SalsaSalsa


2 Answers

Here's a bit of skeleton code to get you started based off what I think you need from what you have said. I hope this is useful.

For the search bit you could do something like this in your index view:

<%= form_for User.new, :url => "search" do |f| %>
  <%= f.label :name %>
  <%- f.text_field :name %>
<%- end %>

In your controller:

def search
  q = params[:user][:name]
  @users = User.find(:all, :conditions => ["name LIKE %?%",q])
end

and in your search view:

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

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

You would, of course, need to ensure the users and achievement models are correctly linked:

class User << ActiveRecord::Base
  has_many :achievements

end
like image 190
Dave A-R Avatar answered Sep 22 '22 14:09

Dave A-R


There are plenty of tutorials and things about this e.g.:

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

Look the thing is every basic explanation in Rails3 starting with the Initial Tutorial provided by them explains you how to setup a new Controller/Model. The example was only one of thousands explaining the same problem.

It is a very broad range of different things you can do to achieve this. Basically you have to put some code in the controller:

  1. which handles the search (including the activerecord stuff or whichever technique you use to access your model)
  2. which sets some variables necessary for the search form

Setup two routes etc... Its to broad and completely covered even by the basic official rails3 tutorial.

like image 33
fyr Avatar answered Sep 25 '22 14:09

fyr