2010-11-18 15 views
1

Je reçois cette erreur pour l'URL http://localhost:3000/dashboard/RoR - Méthode d'index dans le contrôleur

Routing Error No route matches "/dashboard"

mais http://localhost:3000/dashboard/index fonctionne correctement

Comment puis-je faire toutes les URL ci-dessous œuvres et montre la même vue views/dashboard/index.html.erb

http://localhost:3000 
http://localhost:3000/ 
http://localhost:3000/dashboard 
http://localhost:3000/dashboard/ 
http://localhost:3000/dashboard/index 

Mon fichier itinéraires est

Mytest::Application.routes.draw do 
    get "dashboard/index" 
    root :to => "dashboard#index" 
end 

Mon fichier contrôleur est

class DashboardController < ApplicationController 
    def index 

    end 

end 

Répondre

5
Mytest::Application.routes.draw do 
    match "/dashboard", :to => 'dashboard#index' 
    root :to => "dashboard#index" 
end 

Vous pouvez également ajouter des itinéraires génériques de /:controller/:action/:id(.:format) style.

+0

Quand j'ai ajouté 'map.connect « : controller /: action /: id'' Je suis l'erreur suivante sur le démarrage du serveur rails avec «rails serveur» /config/routes.rb:3:in 'block in ': undefined local variable or method 'map' for # (NameError) from E:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.0/lib/action_dis patch/routing/route_set.rb:233:in 'instance_exec' from E:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.0/lib/action_dis patch/routing/route_set.rb:233:in 'draw'

+1

c'est parce que vous avez utilisé vieux (rails 2.x API de routage). Il n'y a plus de variable de bloc. Ajoutez simplement cette ligne dans le bloc: 'match ': controller /: action /: id (.: Format)''. Plus d'informations peuvent être trouvées dans les guides de rails: http://guides.rubyonrails.org/routing.html – Eimantas

0
match '/dashboard', :controller => 'dashboard', :action => 'index' 

Peut-être? Je n'ai pas testé cela.

1

Je ferais

map.root :controller => "dashboard", :action => "index" 
    map.dashboard "/dashboard", :controller => "dashboard", :action => "index" 
    map.connect "/dashboard/:action", :controller => "dashboard", :action => "index" 
    #standard routes 
    map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 

Ou vous pourriez le rendre plus standard

#special case 
    map.root :controller => "dashboard", :action => "index" 

    #general case 
    map.connect ":controller", :action => "index" 
    map.connect ":controller/:action" 

    #standard routes 
    map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 
+1

Cette API n'est pas de style rails3. – Eimantas

+0

Je n'ai pas utilisé les rails 3, mais pourquoi pas? Est-ce que rails3 ne suit plus le style reposant? Ou avez-vous fait une erreur qui ne suit pas REST? –