Search code examples
ruby-on-rails-4routescustom-routes

generated path does not match custom route?


(Rails 4.2) I have a miss-match of routes that's in the routes.rb file vs the generated from my page. What is it I am doing wrong? This is the raked route I want to access :

see_hint_deck_card_tracker GET    /decks/:deck_id/cards/:card_id/trackers/:id/see_hint(.:format) trackers#see_hint

I am actually taken to what I think is the correct url, but it tells me I don't have a route for this page:

http://localhost:3000/decks/9/cards/2/trackers/1/see_hint

I have the following routes:

   resources :decks do
    resources :cards do
      resources :trackers do
        member do
          get 'see_hint'
        end
      end
    end
  end

app/controllers/tracker_controller.rb :

class TrackerController < ApplicationController
    def show_hint
      puts 'we found this'
    end
end

inside my /decks/:id/cards/:id/show I have this link_to: (get_tracker, calls for a helper method to get the correct tracker)

<%= link_to "Reveal Hint", see_hint_deck_card_tracker_path(@card.deck, @card, get_tracker), id: "reveal_hint_button"  %>

Solution

  • I think your error message is probably telling you you don't have a Controller for that route, not that the Route is missing. This is because you're using the plural resources in your routes.rb, but your controller name is singular:

    # Your Code:
    resources :trackers
    controller TrackerController
    
    # Expected Code:
    resources :trackers
    controller TrackersController
                     ^^^
    

    You'll also want to make sure your controller is available at app/controllers/trackers_controller.rb (note the plurality).