2009-05-25 6 views
0

J'ai l'impression de faire quelque chose de mal syntaxiquement mais il est étonnamment difficile pour Google de "GET" alors j'espérais que quelqu'un ici puisse connaître la réponse à cette question. J'essaie de tester un contrôleur Rails à partir d'un test RSpec. Je suis un exemple que j'ai trouvé ici - http://www.elevatedrails.com/articles/2007/09/10/testing-controllers-with-rspec/ mais je suis bloqué sur l'exécution réelle de la méthode que je suis en train de tester.Test de GET dans un contrôleur de rails

Je fais une requête GET où le post ci-dessus fait un POST. Je passe dans 2 paramètres fabricant et modèle.

Mon URL ressemblera idéalement quelque chose comme http://mysite.com/Products/index/Manufacturer/ModelName

Je ne peux pas comprendre la syntaxe de l'appel de requête get dans le reste. En ce moment, je

get :index, :manufacturer=>@manufacturer, :modelName=>@modelName 

et je reviens

ArgumentError dans 'ProductController Trouver un produit valide doit récupérer le produit' nombre incorrect d'arguments (0 pour 2)

Des pensées?

modifier: Il convient de noter @manufacturer et @modelName sont définis avant (: each)

+0

La syntaxe est correcte. Quelque chose d'autre est bancal. Poster plus de détails! Publiez quelques lignes de plus sur votre backtrace d'erreur, publiez toutes vos spécifications défectueuses, affichez la partie pertinente de votre contrôleur et affichez les itinéraires pertinents. :) –

+0

Aussi, comme une note, il semble que vous désobéissez à quelques conventions Rails, ce qui pourrait rendre votre vie plus difficile plutôt que plus facile. modelName devrait être model_name et ProductController devrait probablement être ProductsController au pluriel. –

+0

Également vous devriez probablement perdre les capitaux dans l'url, aussi pourquoi voudriez-vous imbriquer une liste de fabricants d'un index pour des produits. Sûrement que cela fonctionnerait mieux/produits/fabricants, et comme ce serait beaucoup à beaucoup avez-vous exclu/fabricants/produits aussi bien? Mais comme mentionné le code est nécessaire pour aller au fond de votre problème. – nitecoder

Répondre

1

Comme je doutais moi était d'être vert aux rails de programmation.

j'étais définissant la méthode de commande comme

def index(manufacturer, modelName) 

Quand je vraiment besoin d'utiliser le hachage params pour accéder aux attributs. J'ai ensuite dû définir un routage personnalisé car id est le seul paramètre qui devrait être transmis à une méthode de contrôleur par défaut.

une fois que je l'ai fait que je changé la spécification pour lire

get :index, {:manufacturer=>@manufacturer, :modelName=>@modelName} 

et cela a fonctionné.

Merci pour les commentaires tout le monde.

Questions connexes