Hi,- I have a main page with a search box. When the user enters a query and hits "Search" I want to redirect him to another page (another controller with a search action), and display the results on that page. My form looks like this: <% form_tag({:controller => "projects", :action => "search"}, :method => "get") do %> <label for ="q">Enter search phrase: </label> <%= text_field_tag "q", params[:q] %> <input type ="submit" value="Go" /> <% end %> The error I get is: ActiveRecord::RecordNotFound in ProjectsController#show Couldn''t find Project with ID=search How do I override the default route for this, so it doesn''t think search is an id? http://localhost:3000/projects/search?q=foo ? Thanks. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Robert Walker
2008-Nov-12 15:11 UTC
Re: redirecting to a different controller from a search box
> How do I override the default route for this, so it doesn''t think > search is an id?I can think of a few solutions to this. One way would be to add a named route above your resource route: map.projects_search ''projects/search'', :controller => ''project_search'', :action => ''search'' Another possible way would be to use conditions on your existing route mapping, but I''m not expert enough in routing to tell you how to do that. That being said, do you really need your search action to be moved out to a different controller? Maybe you do, and that''s fine, but I wanted to get you to think about whether it''s really necessary. Instead you could just add a custom action to your existing projects controller: map.resources :projects, :collection => { :search => :get } -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Thani Ararsu
2008-Nov-12 15:11 UTC
Re: redirecting to a different controller from a search box
Vahagn Hayrapetyan wrote:> Hi,- > > I have a main page with a search box. When the user enters a query and > hits "Search" I want to redirect him to another page (another > controller with a search action), and display the results on that > page. My form looks like this: > > <% form_tag({:controller => "projects", :action => > "search"}, :method => "get") do %> > <label for ="q">Enter search phrase: </label> > <%= text_field_tag "q", params[:q] %> > <input type ="submit" value="Go" /> > <% end %> > > The error I get is: > > ActiveRecord::RecordNotFound in ProjectsController#show > > Couldn''t find Project with ID=search > > How do I override the default route for this, so it doesn''t think > search is an id? > > http://localhost:3000/projects/search?q=foo ? > > Thanks.you are useing get method so the action name will passed as params[:id] just remove get method then try -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---