Je reçois
$ rake routes
rake aborted!
ArgumentError: Missing :action key on routes definition, please check your routes.
/usr/local/rvm/gems/Ruby-2.1.2/gems/actionpack-4.1.5/lib/action_dispatch/routing/mapper.rb:243:in `default_controller_and_action'
/usr/local/rvm/gems/Ruby-2.1.2/gems/actionpack-4.1.5/lib/action_dispatch/routing/mapper.rb:117:in `normalize_options!'
/usr/local/rvm/gems/Ruby-2.1.2/gems/actionpack-4.1.5/lib/action_dispatch/routing/mapper.rb:65:in `initialize'
/usr/local/rvm/gems/Ruby-2.1.2/gems/actionpack-4.1.5/lib/action_dispatch/routing/mapper.rb:1487:in `new'
/usr/local/r................
Voici mes routes.rb
Rails.application.routes.draw do
get 'script/index'
get 'landing/index'
root 'landing/index'
end
Quelle est la cause du problème et comment puis-je le résoudre.
Rails.application.routes.draw do
get 'script/index' => 'script#index'
get 'landing/index' => 'landing#index'
root 'script#index'
end
Vous pouvez le faire de plusieurs façons, celles-ci fonctionnent toutes:
Pensez à chemin premier et contrôleur # méthode à suivre.
La racine est un cas particulier, toujours: root 'script # index'
Changez root 'landing/index'
En root 'landing#index'
J'ai eu la même erreur en cours d'exécution Rails g
.
Si vous exécutez une commande utilisant routes.rb
, le fichier doit être exempt d'erreur pour que la commande fonctionne.
Dans votre cas, vous aviez des chemins, mais vous ne les avez pas associés à des actions, le fichier routes.rb
était donc cassé. Vous aviez besoin de quelque chose comme get 'landing/index' => 'my_controller#my_action'
Le code de Kaleidoscope fonctionne très bien. Vous trouverez ci-dessous une version légèrement concise.
Rails.application.routes.draw do
get 'script/index'
get 'landing/index'
root 'script#index'
end
Les rails ajoutent le côté gauche de la flèche (=>) par convention en remplaçant /
par #
.