2011-01-12 10 views
2

Dans mon Rails 2.3 application, les routes suivantes travaillaient correctementroutes Ajax dans Rails 3

map.ajax 'ajax', :controller => 'widgetresponse_controller' , :action => 'getWidgetJson' 

Quand je migré vers Rails 3,
J'ai essayé un certain nombre de nouvelles routes, pour obtenir ce travail, mais aucun d'entre eux a travaillé.

1.

match 'ajax' => 'widgetresponse#getWidgetJson', :as => :ajax 

2.

match 'ajax' => 'widgetresponse_controller#getWidgetJson', :as => :ajax 

3.

get 'widgetresponse/getWidgetJson', :as => :ajax 

4.

get 'widgetresponse/getWidgetJson' 

C'est une question très basique à poser, mais je ne sais pas ce que je fais de mal.

+0

Vous recevez une erreur? – polarblau

+0

Pourquoi votre contrôleur ressemble-t-il à: widgetresponse_controller dans votre route Rails 2.x? – apneadiving

+0

@polarblau: Oui, il ne trouve pas la route et affiche: Erreur de routage Aucune route ne correspond "/ widgetresponse/getWidgetJson/1" –

Répondre

1

Vous pouvez essayer ceci:

match "/widgetresponse/getWidgetJson/:id" => "widgetresponse#getWidgetJson" 
+0

@polarblu: Je connais la route ci-dessus mais ici je suis codé en dur que mon appel ajax de la vue n'enverra qu'un seul paramètre à l'action. Un jour plus tard, si je veux envoyer 2 paramètres de plus, je devrais revenir à mon fichier de routes et changer la définition de route pour la faire fonctionner à nouveau, ce qui n'est pas le cas d'un appel ajax, car vous ne mentionnez pas n'importe où dans les routes les paramètres que vous passez. –

+0

Mais comment les paramètres sont-ils importants pour votre routage? Ne sachant pas votre conception, je me demande ce que vous accédez au sein du contrôleur widgetresponse? Cela ne peut pas être une ressource, n'est-ce pas? Et vous n'utilisez pas vraiment une approche RESTful non plus? – polarblau

+0

Merci pour votre réponse. J'étais un peu perplexe puis et après un moment, votre soln. fait parfaitement sens. –

1

Une chose qui a pu se passer avant que les choses se passent à travers la route par défaut qui a été supprimée dans Ruby on Rails 3 (bonne idée).

J'ai trouvé ce guide:

http://www.engineyard.com/blog/2010/the-lowdown-on-routes-in-rails-3/

vraiment utile avec beaucoup de rails délicieux 3 nouvelles options.

+0

Je suis allé à travers l'article quand je faisais face au problème, mais il n'y a aucune mention quant à la façon d'écrire un itinéraire pour un appel AJAX. Merci quand même, pour partager l'article.Je suis sûr que ça va aider quelqu'un qui se bat avec des routes dans Rails3. –

+0

Merci. Vos appels ajax devraient être assez identiques à ceux réguliers. Je crois que la différence majeure est que juust dans "what" obtient des retours et avec AJAX c'est souvent quelque chose comme JSON pour un message, etc., plutôt qu'un rechargement de page complet, mais cela se fait dans le contrôleur avec responds_to/responds_with (syntaxe rails3). –

+0

alors peut-être votre problème est juste rails2 -> rails3, pas ajax –