route helpers are not working

Hey all,

I find this in ruby guide:

resources :photos do
  collection do
    get 'search'
  end
end
It will also create the search_photos_url and search_photos_path route
helpers.

So I try to implement:

#routes
  resources :core do
    collection do
      get 'coreim'
      get 'corer'
    end
  end

#index.html.haml
= link_to 'core', coreim_core_path

I get undefined method coreim_core_path

Thanks for response

Phil

Hey all,

I find this in ruby guide:

resources :photos do

collection do

get 'search'

end

end

It will also create the search_photos_url and search_photos_path route

helpers.

So I try to implement:

#routes

resources :core do

collection do

  get 'coreim'

  get 'corer'

end

end

#index.html.haml

= link_to ‘core’, coreim_core_path

I get undefined method coreim_core_path

run ‘rake routes’ on the command line to see the routes that were created.

Excerpts from John Merlino's message of Wed Mar 30 08:45:50 -0700 2011:

So I try to implement:

#routes
  resources :core do
    collection do
      get 'coreim'
      get 'corer'
    end
  end

With that routes file:

  $ rake routes
  coreim_core_index GET /core/coreim(.:format) {:action=>"coreim", :controller=>"core"}
         core_index GET /core(.:format) {:action=>"index", :controller=>"core"}
                    POST /core(.:format) {:action=>"create", :controller=>"core"}
           new_core GET /core/new(.:format) {:action=>"new", :controller=>"core"}
          edit_core GET /core/:id/edit(.:format) {:action=>"edit", :controller=>"core"}
               core GET /core/:id(.:format) {:action=>"show", :controller=>"core"}
                    PUT /core/:id(.:format) {:action=>"update", :controller=>"core"}
                    DELETE /core/:id(.:format) {:action=>"destroy", :controller=>"core"}

So you would have +coreim_core_index_path+, for example.

This rather surprised me, since I had the same expectations as you. Further
investigation suggestions inflections are to blame.

  # config/routes.rb

  # Note that we changed the resource to a pluralized form: "cores" instead of "core".
  resources :cores do
    collection do
      get 'coreim'
      get 'corer'
    end
  end

  $rake routes
  coreim_cores GET /cores/coreim(.:format) {:action=>"coreim", :controller=>"cores"}
         cores GET /cores(.:format) {:action=>"index", :controller=>"cores"}
               POST /cores(.:format) {:action=>"create", :controller=>"cores"}
      new_core GET /cores/new(.:format) {:action=>"new", :controller=>"cores"}
     edit_core GET /cores/:id/edit(.:format) {:action=>"edit", :controller=>"cores"}
          core GET /cores/:id(.:format) {:action=>"show", :controller=>"cores"}
               PUT /cores/:id(.:format) {:action=>"update", :controller=>"cores"}
               DELETE /cores/:id(.:format) {:action=>"destroy", :controller=>"cores"}

Excerpts from David J. Hamilton's message of Wed Mar 30 09:22:01 -0700 2011:

This rather surprised me, since I had the same expectations as you. Further
investigation suggestions inflections are to blame.

suggestions → suggests.

Thanks for response, it outputs this:

coreim_core_index GET /core
/coreim(.:format) {:action=>"coreim",
:controller=>"core"}
corer_core_index GET /core/corer(.:format)
{:action=>"corer", :controller=>"core"}

So I would expect this to work:

coreim_core_path
corer_core_path

But neither does. This doesn't work either:

coreim_core_index
corer_core_index

  $rake routes
  coreim_cores GET /cores/coreim(.:format) {:action=>"coreim",
:controller=>"cores"}
         cores GET /cores(.:format) {:action=>"index",
:controller=>"cores"}

ah, thanks for response. I didnt see this message on my last response.

Phil

Thanks for response, it outputs this:

coreim_core_index GET /core

/coreim(.:format) {:action=>“coreim”,

:controller=>“core”}

corer_core_index GET /core/corer(.:format)

{:action=>“corer”, :controller=>“core”}

So I would expect this to work:

coreim_core_path

corer_core_path

But neither does. This doesn’t work either:

coreim_core_index

corer_core_index

For the record, if rake routes gives you the name coreim_core_index, then the named route will be coreim_core_index_path or coreim_core_index_url… not just coreim_core_index by itself. If you’re changing the route names, that may not matter. :slight_smile: