44 votes

Ruby on rails: mettez un lien en un éclair [: notice]

Je suis dans les premiers stades de l'apprentissage de ruby et RoR.

J'ai un Rubis sur des Rails de projet qui assure le suivi des emplois d'un serveur est en cours d'exécution. Maintenant, lorsque vous créez manuellement un nouvel emploi, il annonce flash[:notice] = "Created job job number #{update.id}." j'aimerais à l' #{update.id} en un lien à l'emploi sur la liste des travaux.

L'URL pour aller au travail est - jobs/list?job=1234 où 1234 est la mise à jour.id qui s'affiche dans le flash avis.

Donc, est-il possible de mettre un lien dans un flash[:notice] déclaration? Ou dois-je le re-travail, comment ce message est affiché afin de le transformer en un lien?

43voto

Kirill Points 1337

N'oubliez pas d'ajouter .html_safe à la fin de l'avis, si vous utilisez Rails3. Il dirait donc flash[:notice] = "Your message".html_safe

38voto

Dorian Points 891

La variable d'instance @template n'est plus disponible dans Rails 3 .

Au lieu de cela, vous pouvez utiliser ceci:

 flash[:notice] = "Successfully created #{view_context.link_to('product', @product)}."
 

J'espère que cela t'aides :)

35voto

Emily Points 9231

Il me manque peut-être quelque chose d’évident, mais vous devriez juste pouvoir le faire

 flash[:notice] = %Q[Created job number <a href="http://stackoverflow.com/jobs/list?job=#{update.id}">#{update.id}</a>]
 

puis assurez-vous de ne pas échapper au contenu du flash lorsque vous l'affichez dans votre vue.

16voto

mikej Points 30224

Comme nas l'a commenté, link_to n'est pas disponible à partir de votre contrôleur, sauf si vous incluez le module d'assistance approprié, mais url_for est. Par conséquent, je ferais à peu près ce que Emily a dit, sauf utiliser url_for au lieu de coder en dur une URL.

Par exemple, si un travail a été défini comme une ressource dans vos itinéraires:

 link = "<a href=\"#{url_for(update)}\">#{update.id}</a>"    
flash[:notice] = "Created job number #{link}"
 

4voto

nanda Points 955

Vous pouvez utiliser un alias dans votre contrôleur pour la fonction * link_to * ou la recette RailsCast:

 "Created job job number #{@template.link_to update.id, 
  :controller => 'jobs', :action => 'list', :job => update.id}."
 

http://railscasts.com/episodes/132-helpers-outside-views

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