oogle
oogle

Reputation: 13

No route matches "/admin" error

I am writing my first application in rails and here is what I did

C:\Personal\rails\demo>ruby -v
    ruby 1.9.2p136 (2010-12-25) [i386-mingw32]

C:\Personal\rails\demo>rails -v
    Rails 3.0.5

C:\Personal\rails\demo>rails generate model book
      invoke  active_record
      create    db/migrate/20110325190010_create_books.rb
      create    app/models/book.rb
      invoke    test_unit
      create      test/unit/book_test.rb
      create      test/fixtures/books.yml

C:\Personal\rails\demo>rake db:migrate
(in C:/Personal/rails/demo)
==  CreateBooks: migrating ====================================================
-- create_table(:books)
   -> 0.0000s
==  CreateBooks: migrated (0.0000s) ===========================================


C:\Personal\rails\demo>rails generate controller admin
      create  app/controllers/admin_controller.rb
      invoke  erb
      create    app/views/admin
      invoke  test_unit
      create    test/functional/admin_controller_test.rb
      invoke  helper
      create    app/helpers/admin_helper.rb
      invoke    test_unit
      create      test/unit/helpers/admin_helper_test.rb

Then i edited the admin_controller.rb as follows:

class AdminController < ApplicationController
    scaffold :book
end

Here is the routes.rb file

Demo::Application.routes.draw do
  # The priority is based upon order of creation:
  # first created -> highest priority.

  # Sample of regular route:
  #   match 'products/:id' => 'catalog#view'
  # Keep in mind you can assign values other than :controller and :action

  # Sample of named route:
  #   match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
  # This route can be invoked with purchase_url(:id => product.id)

  # Sample resource route (maps HTTP verbs to controller actions automatically):
  #   resources :products

  # Sample resource route with options:
  #   resources :products do
  #     member do
  #       get 'short'
  #       post 'toggle'
  #     end
  #
  #     collection do
  #       get 'sold'
  #     end
  #   end

  # Sample resource route with sub-resources:
  #   resources :products do
  #     resources :comments, :sales
  #     resource :seller
  #   end

  # Sample resource route with more complex sub-resources
  #   resources :products do
  #     resources :comments
  #     resources :sales do
  #       get 'recent', :on => :collection
  #     end
  #   end

  # Sample resource route within a namespace:
  #   namespace :admin do
  #     # Directs /admin/products/* to Admin::ProductsController
  #     # (app/controllers/admin/products_controller.rb)
  #     resources :products
  #   end

  # You can have the root of your site routed with "root"
  # just remember to delete public/index.html.
  # root :to => "welcome#index"

  # See how all your routes lay out with "rake routes"

  # This is a legacy wild controller route that's not recommended for RESTful applications.
  # Note: This route will make all actions in every controller accessible via GET requests.
  # match ':controller(/:action(/:id(.:format)))'
end

However, when I go to http://localhost:3000/admin, I get a "No route matches "/admin"" error. I noticed that my routes.rb has only the commented lines. Did I do something wrong?

Upvotes: 1

Views: 4363

Answers (3)

Shiva
Shiva

Reputation: 12592

Note: This answer is for the case when above mentioned points are met yet you keep seeing this error. It was Rails 3.2 and Ruby 2.3.8


Problem definition:

I successfully logged in using admin creds. When page landed on /admin I saw No route matches [GET] "/admin" error page. I hit my head everywhere and used all my knowledge. Also, generated routes and grep but no admin route was published.

$ rake routes | grep admin

but only devise related admin routes were published. And then I read the warning about the routes which I noticed later, which goes like

ActiveAdmin: ActiveAdmin::DatabaseHitDuringLoad: Your file, app/admin/account_tags.rb (line 4), 
caused a database error while Active Admin was loading. This is most common 
when your database is missing or doesn't have the latest migrations applied. 
To prevent this error, move the code to a place where it will only be run 
when a page is rendered. One solution can be, to wrap the query in a Proc.
Original error message: PG::UndefinedTable: ERROR:  relation "account_tags" does not exist

Solution

I ran rake db:migrate and restarted the server, the problem was gone.

Upvotes: 0

Shiv
Shiv

Reputation: 8412

You have not added a route for admin, why are all your routes commented out.

if admin is a resource add this line

resources :admin

Also in your controller you will need an index method and index view file because http://localhost:3000/admin will take you there

Upvotes: 1

Oded Harth
Oded Harth

Reputation: 4406

Try removing the comment from this line:

match ':controller(/:action(/:id(.:format)))'

Upvotes: 0

Related Questions