mywebsite/admin/categories point to show.html.erb?

Hi everyone, I'm having some troubles with RoR and REStful
controllers:

I generated a simple scaffold "categories" wich contains name and
branch column: easy.
I also generated a namespaced controller "admin/categories".
I replaced all the scaffold's link_path in my views to match with my
admin namespace, such as "<%= link_to 'Show', @category %>" became "<
%= link_to 'Show', [:admin, @category] %> ".
I replace the resource routes with my namespace:

  namespace :admin do
    resources :categories
  end

And everything works fine... Until I created a resource in my database
using scaffold forms... Now when I'm going to "mywebsite/admin/
categories", rails is trying to render show method:
No route matches {:action=>"show", :controller=>"admin/categories"}

I search on the web to fix and found this:
http://www.ruby-forum.com/topic/145160

But I didn't really understand how to fix the problem.

Can someone help me? =)

Regards,
Romain 'Maz' B.

What version of Rails are you using? Can you post your entire routes.rb file?

I'm using rails 3.1.0 on ruby 1.9.2. my routes.rb just contains the
admin namespace and a root_to which points to application#index. I'll
post rake routes as soon I can if it's necessary

When you say that it is trying to *render* the show method do you mean
that is during running the index action? Is the render being invoked
from the index action? Have a look in the rails log. If you can't
see what is happening then post the log starting with what happens
when you click the link.

You also might like to have a look at the rails guide on debugging.
That will show you how to use ruby-debug to break into your code and
see what is going on. So you can break into the index action
(assuming it is getting there) and inspect data and follow the flow to
see what is happening.

Colin

No, this is what's happening:
when i typed for the first time /admin/categories, it rendered me the
empty list of categories. I clicked the New link, rendered the add
form, submit the form rendered the new category, click the Return link
which is /admin/categories, performed show action. WHY?

If i delete the entry in my database, /admin/categories performs index
action like it should. WHY²?

Here is my log:

Started GET "/admin/categories" for 127.0.0.1 at 2011-09-14 23:16:04
+0200
  Processing by Admin::CategoriesController#index as HTML
  e[1me[36mCategory Load (0.5ms)e[0m e[1mSELECT "categories".* FROM
"categories" e[0m
Rendered admin/categories/index.html.erb within layouts/application
(19.3ms)
Completed 200 OK in 120ms (Views: 117.5ms | ActiveRecord: 0.5ms)

Started GET "/assets/application.css?body=1" for 127.0.0.1 at
2011-09-14 23:16:05 +0200
Served asset /application.css - 304 Not Modified (0ms)

Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2011-09-14
23:16:05 +0200
Served asset /jquery.js - 304 Not Modified (6ms)

Started GET "/assets/categories.js?body=1" for 127.0.0.1 at 2011-09-14
23:16:05 +0200
Served asset /categories.js - 304 Not Modified (2ms)

Started GET "/assets/admin/categories.js?body=1" for 127.0.0.1 at
2011-09-14 23:16:05 +0200
Served asset /admin/categories.js - 304 Not Modified (2ms)

Started GET "/assets/application.js?body=1" for 127.0.0.1 at
2011-09-14 23:16:05 +0200
Served asset /application.js - 304 Not Modified (0ms)

Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2011-09-14
23:16:05 +0200
Served asset /jquery_ujs.js - 304 Not Modified (4ms)

Started GET "/admin/categories/new" for 127.0.0.1 at 2011-09-14
23:16:06 +0200
  Processing by Admin::CategoriesController#new as HTML
Rendered admin/categories/_form.html.erb (24.0ms)
Rendered admin/categories/new.html.erb within layouts/application
(38.3ms)
Completed 200 OK in 48ms (Views: 44.7ms | ActiveRecord: 2.0ms)

Started GET "/assets/application.css?body=1" for 127.0.0.1 at
2011-09-14 23:16:06 +0200
Served asset /application.css - 304 Not Modified (0ms)

Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2011-09-14
23:16:06 +0200
Served asset /jquery_ujs.js - 304 Not Modified (0ms)

Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2011-09-14
23:16:06 +0200
Served asset /jquery.js - 304 Not Modified (0ms)

Started GET "/assets/admin/categories.js?body=1" for 127.0.0.1 at
2011-09-14 23:16:06 +0200
Served asset /admin/categories.js - 304 Not Modified (0ms)

Started GET "/assets/categories.js?body=1" for 127.0.0.1 at 2011-09-14
23:16:06 +0200
Served asset /categories.js - 304 Not Modified (0ms)

Started GET "/assets/application.js?body=1" for 127.0.0.1 at
2011-09-14 23:16:06 +0200
Served asset /application.js - 304 Not Modified (0ms)

Started POST "/admin/categories" for 127.0.0.1 at 2011-09-14 23:16:16
+0200
  Processing by Admin::CategoriesController#create as HTML
  Parameters: {"utf8"=>"✓",
"authenticity_token"=>"PVlLpCPYEhLre3tsFlYRQdVnbbySI2Gw/YSCEuzjnWo=",
"category"=>{"name"=>"vaze", "branch"=>"Project"}, "commit"=>"Create
Category"}
  e[1me[35m (0.3ms)e[0m BEGIN
  e[1me[36mSQL (24.0ms)e[0m e[1mINSERT INTO "categories" ("branch",
"created_at", "name", "updated_at") VALUES ($1, $2, $3, $4) RETURNING
"id"e[0m [["branch", "Project"], ["created_at", Wed, 14 Sep 2011
21:16:16 UTC +00:00], ["name", "vaze"], ["updated_at", Wed, 14 Sep
2011 21:16:16 UTC +00:00]]
  e[1me[35m (12.0ms)e[0m COMMIT
Redirected to http://127.0.0.1:3000/admin/categories/7
Completed 302 Found in 51ms

Started GET "/admin/categories/7" for 127.0.0.1 at 2011-09-14 23:16:16
+0200
  Processing by Admin::CategoriesController#show as HTML
  Parameters: {"id"=>"7"}
  e[1me[36mCategory Load (0.8ms)e[0m e[1mSELECT "categories".* FROM
"categories" WHERE "categories"."id" = $1 LIMIT 1e[0m [["id", "7"]]
Rendered admin/categories/show.html.erb within layouts/application
(7.1ms)
Completed 200 OK in 25ms (Views: 16.6ms | ActiveRecord: 4.1ms)

Started GET "/assets/application.css?body=1" for 127.0.0.1 at
2011-09-14 23:16:16 +0200
Served asset /application.css - 304 Not Modified (0ms)

Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2011-09-14
23:16:16 +0200
Served asset /jquery.js - 304 Not Modified (0ms)

Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2011-09-14
23:16:16 +0200
Served asset /jquery_ujs.js - 304 Not Modified (0ms)

Started GET "/assets/categories.js?body=1" for 127.0.0.1 at 2011-09-14
23:16:16 +0200
Served asset /categories.js - 304 Not Modified (0ms)

Started GET "/assets/admin/categories.js?body=1" for 127.0.0.1 at
2011-09-14 23:16:16 +0200
Served asset /admin/categories.js - 304 Not Modified (0ms)

Started GET "/assets/application.js?body=1" for 127.0.0.1 at
2011-09-14 23:16:16 +0200
Served asset /application.js - 304 Not Modified (0ms)

Started GET "/admin/categories" for 127.0.0.1 at 2011-09-14 23:16:18
+0200
  Processing by Admin::CategoriesController#index as HTML
  e[1me[35mCategory Load (0.3ms)e[0m SELECT "categories".* FROM
"categories"
Rendered admin/categories/index.html.erb within layouts/application
(39.4ms)
Completed 500 Internal Server Error in 52ms

ActionView::Template::Error (No route matches
{:action=>"show", :controller=>"admin/categories"}):
    13: <tr>
    14: <td><%= category.name %></td>
    15: <td><%= category.branch %></td>
    16: <td><%= link_to 'Show', admin_category_path(@category) %></

    17: <td><%= link_to 'Edit',
edit_admin_category_path(@category) %></td>
    18: <td><%= link_to 'Destroy', admin_category_path(@category),
confirm: 'Are you sure?', method: :delete %></td>
    19: </tr>
  app/views/admin/categories/index.html.erb:16:in `block in
_app_views_admin_categories_index_html_erb___936809880_79782210'
  app/views/admin/categories/index.html.erb:12:in `each'
  app/views/admin/categories/index.html.erb:12:in
`_app_views_admin_categories_index_html_erb___936809880_79782210'
  app/controllers/admin/categories_controller.rb:7:in `index'

Rendered /usr/lib/ruby/gems/1.9.1/gems/actionpack-3.1.0/lib/
action_dispatch/middleware/templates/rescues/routing_error.erb within
rescues/layout (0.8ms)

Okay, i just fixed the problem.

In index.html.erb to display link i used this:
    <td><%= link_to 'Show', admin_category_path(@category) %></td>
    <td><%= link_to 'Edit', edit_admin_category_path(@category) %></

    <td><%= link_to 'Destroy', admin_category_path(@category),
confirm: 'Are you sure?', method: :delete %></td>

which is the default generated link by scaffold, just added "admin_".
But the problem come from the @category, if i delete the @:
    <td><%= link_to 'Show', admin_category_path(category) %></td>
    <td><%= link_to 'Edit', edit_admin_category_path(category) %></td>
    <td><%= link_to 'Destroy', admin_category_path(category), confirm:
'Are you sure?', method: :delete %></td>

Everything works fine!

Thanks a lot!