No route found to match "/search" with {:method=>:get}

Hi,

I have posted this before on another site with no help so I’m hoping I
will get it here:

am a bit new to the whole RoR thing and have faced small problem,
but was not able to fine related answer to my specific condition. I am
writing an application called site which I want to be the default root
application. I did the required configuration in routes.rb file.

Problem is, on the main page, I have a GET form that does not wrap
object model, and has an id. I tried manual HTML and it didn’t work
when I am visiting the site from http://localhost:3000 because the
action ‘search’ will point to non-existing action on that level,
yielding error:

no route found to match “/search” with {:method=>:get}

if I go to http://localhost:300/site/index and do the search it works
fine. I tried the form_tag and it also didn’t help. Any idea how I can
overcome this issue?

Salam Bashar,

I dont exactly understand your problem, but show us some code from your
main controller which would be in this case.

site / index

Salam Jamal,

There is nothing much to see in the controller, but rather here is a
snippet from the view index generating the GET request:

 <form id="searchbox_012963" action="search">
  <input name="q" type="text" size="40" />
  <input type="submit" name="sa" value="Search" />
</form>

Now problem is when I visit the index page on
http://localhost:3000/site/index the action works just fine. But if I
use the root mapping, http://localhost:3000 and then do the search, it
will complain that there is no route found for GET on /search.

you are missing the slash in front of search, it should be:

not

/Jonas

On 2 Sep, 06:43, Bashar A. [email protected]

Bashar A. wrote:

Salam Jamal,

There is nothing much to see in the controller, but rather here is a
snippet from the view index generating the GET request:

 <form id="searchbox_012963" action="search">
  <input name="q" type="text" size="40" />
  <input type="submit" name="sa" value="Search" />
</form>

Now problem is when I visit the index page on
http://localhost:3000/site/index the action works just fine. But if I
use the root mapping, http://localhost:3000 and then do the search, it
will complain that there is no route found for GET on /search.

Well, you need to point it in the right direction.

did you create route for /search?

or you could do this

action=“site/search”

Thanks Jonas. I tried that before it didn’t work. The solution from
Jamal and Alexey worked.