Larisa Chira
Larisa Chira

Reputation: 3

Routing Error uninitialized constant controller

I'm am trying to learn Ruby on rails and I keep getting this error.

My controller is

class Clasa9Controller < ApplicationController
  def multimi
  end

  def progresii
  end

  def functii
  end

  def vectori
  end

  def trigonometrie
  end

  def geometrie
  end
end

clasa9.html.erb

 <button class="btn"><%= link_to "", multimi_path %></button>

rails routes:

multimi GET    /clasa_9/multimi(.:format)           clasa_9#multimi
               progresii GET    /clasa_9/progresii(.:format)         clasa_9#progresii
                 functii GET    /clasa_9/functii(.:format)           clasa_9#functii
                 vectori GET    /clasa_9/vectori(.:format)           clasa_9#vectori
           trigonometrie GET    /clasa_9/trigonometrie(.:format)     clasa_9#trigonometrie
               geometrie GET    /clasa_9/geometrie(.:format)         clasa_9#geometrie

and routes.rb

 get 'clasa_9/multimi', to:"clasa_9#multimi", as:"multimi"

  get 'clasa_9/progresii', to:"clasa_9#progresii", as:"progresii"

  get 'clasa_9/functii', to:"clasa_9#functii", as:"functii"

  get 'clasa_9/vectori', to:"clasa_9#vectori", as:"vectori"

  get 'clasa_9/trigonometrie',  to:"clasa_9#trigonometrie", as:"trigonometrie"

  get 'clasa_9/geometrie',  to:"clasa_9#geometrie", as:"geometrie"

  devise_for :users

  get 'pages/home'

  get 'pages/clasa9'

  get 'pages/clasa10'

  get 'pages/clasa11'

  get 'pages/clasa12'

  get 'pages/about'

  root 'pages#home'

and im am getting

Routing Error uninitialized constant Clasa9Controller

I tried to solve this by looking up what is already posted here but I just can't solve it... I don't understand what I should change.

Upvotes: 0

Views: 4715

Answers (2)

fool-dev
fool-dev

Reputation: 7777

Look it would be clasa9 but why that when you run this with the underscore method like this

Loading development environment (Rails 5.1.4)
2.3.4 :001 > "Clasa9Controller".underscore
 => "clasa9_controller" 

it returns clasa9_controller that means your controller is clasa9 not clasa_9 and file name will be clasa9_controller.rb then your routes would be to: "clasa9#multimi" like this

get 'clasa_9/multimi', to: "clasa9#multimi", as: "multimi"
#or
#get 'clasa_9/multimi', to: "clasa9#multimi", as: :multimi # removed doublw quotes from multimi 
...

Follow this it should work.

Upvotes: 0

Kwstas Kalpakloglou
Kwstas Kalpakloglou

Reputation: 36

If your file is located inside the app/controllers folder, then it is probably a file name issue. Your file should have the name clasa9_controller.rb.

If not, then you should load the file by creating an initializer or by adding an autoload_path inside config/development.rb

Rails loads by default:

  1. All subdirectories of app in the application and engines present at boot time. For example, app/controllers. They do not need to be the default ones, any custom directories like app/workers belong automatically to autoload_paths.

  2. Any existing second level directories called app/*/concerns in the application and engines.

  3. The directory test/mailers/previews.

Upvotes: 2

Related Questions