2010-10-08 7 views
4

J'essaie d'écrire mon premier rail 3 gemmes - tout fonctionne bien, sauf pour les routes - je n'arrive pas à les faire fonctionner. C'est possible c'est une erreur très simple - comme mentionné, c'est ma première expérience avec des moteurs. Le bijou lui-même est très, très basique - littéralement juste un échafaudageRails newbie: Comment ajouter des routes à un rail 3 moteur?

config de mon petit bijou/fichier itinéraires:

class ActionController::Routing::RouteSet 
    resources :frogs 
end 

... Et quand je tente de démarrer le serveur, je reçois l'erreur suivante:

/home/john/.rvm/gems/ruby-1.9.2-p0/gems/cancandevise-0.1.0/config/routes.rb:3:in <class:RouteSet>': undefined method resources' for ActionDispatch::Routing::RouteSet:Class (NoMethodError)

Toute suggestion très appréciée. A l'heure actuelle, la pierre précieuse est rien de plus qu'un très rails générés de base « grenouille » échafaudage

Cheers, - JB

+0

Est-ce une faute de frappe 'ressources: frogs'; comme il devrait être 'ressources: grenouilles'? Peut-être la cause de votre problème ... –

+0

Heureusement, il était correct dans le fichier. Bravo de toute façon ... ça aurait été embarrassant. ;-) – PlankTon

Répondre

5

@marcgg, je crois que la syntaxe est pour une application régulière des rails, mais je pense qu'il parle d'un moteur.

@unclaimedbaggage, votre fichier routes moteur/gem devrait ressembler à ceci:

Rails.application.routes.draw do |map| 
    resources :frogs 
end 

J'ai fait un moteur exemple qui touche à tous les problèmes de configuration commune que je rencontrais lors de la création de mon premier petit bijou, vous pourriez trouver utile référence:

http://keithschacht.com/creating-a-rails-3-engine-plugin-gem/

+0

Parfait - merci beaucoup. ;-) – PlankTon

2

Je ne sais pas si je pourquoi vous utilisez un routeset. Quel fichier avez-vous montré? Avez-vous essayé ceci:

YourApp::Application.routes.draw do |map| 
    resources :frogs 
    end 

Plus d'infos ici: http://asciicasts.com/episodes/203-routing-in-rails-3

+0

Je ne pouvais pas faire cela parce que, faisant partie d'une gemme, 'YourApp' pourrait avoir n'importe quelle valeur. Cependant, vous avez raison, j'aurais dû dessiner. Je l'ai eu avec Rails.application.routes.draw faire | map | ...Merci. ;-) – PlankTon

0

Je voulais juste ajouter une solution de rechange ici, comme je ne suis pas sûr @Keith Schact fait les choses comme conventional, cela a fonctionné pour moi:

MyEngine::Engine.routes.draw do 
    resources :frogs 
end 

alors dans l'application qui nécessite la pierre précieuse:

mount MyEngine::Engine => '/my_engine', :as => :some_namespace

L'URL que vous obtiendrez est alors:

http://myserver.com/some_namespace/frogs