Search code examples
ruby-on-railsroutesprefix

Rails Routes Wrong Prefix


I'm getting a strange error when renaming the resourcce "like" to "love"

In routes.rb I've changed:

resources :likes
resources :recipes do
  member do
    get :likes
  end
end

to

resources :loves
resources :recipes do
  member do
    get :loves
  end
end

and rake:routes says

              loves GET    /loves(.:format)                        loves#index
                    POST   /loves(.:format)                        loves#create
           new_lofe GET    /loves/new(.:format)                    loves#new
          edit_lofe GET    /loves/:id/edit(.:format)               loves#edit
               lofe GET    /loves/:id(.:format)                    loves#show
                    PATCH  /loves/:id(.:format)                    loves#update
                    PUT    /loves/:id(.:format)                    loves#update
                    DELETE /loves/:id(.:format)                    loves#destroy
       loves_recipe GET    /recipes/:id/loves(.:format)            recipes#loves
            recipes GET    /recipes(.:format)                      recipes#index
                    POST   /recipes(.:format)                      recipes#create
         new_recipe GET    /recipes/new(.:format)                  recipes#new
        edit_recipe GET    /recipes/:id/edit(.:format)             recipes#edit
             recipe GET    /recipes/:id(.:format)                  recipes#show
                    PATCH  /recipes/:id(.:format)                  recipes#update
                    PUT    /recipes/:id(.:format)                  recipes#update
                    DELETE /recipes/:id(.:format)                  recipes#destroy

and ofcourse i get an error

uninitialized constant User::Lofe

but where comes the prefix "Lofe"? looks a bit strange for me


Solution

  • This is due to the active support pluralization features in rails.

    To solve your issue:

    in config/initializers/inflections.rb add the following:

    ActiveSupport::Inflector.inflections do |inflect|
      inflect.uncountable %w(Loves)
    end
    

    After running $ rake:routes I get:

     Prefix Verb   URI Pattern               Controller#Action
    loves_index GET    /loves(.:format)          loves#index
                POST   /loves(.:format)          loves#create
      new_loves GET    /loves/new(.:format)      loves#new
     edit_loves GET    /loves/:id/edit(.:format) loves#edit
          loves GET    /loves/:id(.:format)      loves#show
                PATCH  /loves/:id(.:format)      loves#update
                PUT    /loves/:id(.:format)      loves#update
                DELETE /loves/:id(.:format)      loves#destroy