49 votes

Routage des auxiliaires dans la réserve d'actifs

en utilisant Rails 3.1.0.rc4, j'essaie d'accéder à un assistant de route dans un fichier javascript (event.js.erb dans ce cas) et il semble que ceux-ci ne soient pas chargés à ce moment. Lors de la demande du fichier merged /assets/application.js, je reçois:

 throw Error("NameError: undefined local variable or method `events_path' for #<#<Class:0x00000001580010>:0x00000003191510>\n  (in /<...>/app/assets/javascripts/event.js.erb)")
 

Avez-vous une idée de la façon d’accéder à l’aide au routage?

88voto

Adam Lassek Points 18918

Le problème, c'est que pignon est de l'évaluation de la CRE en dehors du contexte de votre application Rails, et la plupart des choses que l'on attend n'est pas là.

Je peux faire de certains d'entre eux travaillent comme ceci:

<% url = MyRailsApp::Application.routes.url_helpers %>

var events_path = "<%= url.events_path %>";

C'est bien beau, mais avoir des aides qui nécessitent un id pour le travail est un peu plus délicat. Je vais utiliser une technique appelée un Modèle URI:

var event_path = "<%= CGI.unescape url.event_path('{event_id}') %>";

qui renvoie /events/{event_id} où vous pourriez vous rendre dans une url à l'aide d'un objet comme { event_id: 1 }. Voir SugarJS de la Chaîne#assigne méthode comme exemple de mise en œuvre de cette. Vous pouvez également rouler comme je l'ai fait.

1voto

Peter Hawkins Points 137

Vous pouvez déplacer le fichier vers des vues où il a accès au contexte approprié, puis l'extraire vers le client à partir d'une balise source JS. Faire référence à MyRailsApp :: Application.routes.url_helpers peut ne pas être le meilleur si vous écrivez un moteur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X