57 votes

Fonctions cachées de Ruby on Rails

En tant que compagnon de Fonctions cachées de Ruby .

Essayez de vous en tenir à Rails, car l'autre site est un meilleur endroit pour les exemples spécifiques à Ruby. Un par message s'il vous plaît.

70voto

Jo Hund Points 141

Pour éviter les soumissions de formulaires en double, Rails dispose d'une option intéressante pour les balises de soumission :

submit_tag "Submit", :disable_with => "Saving..."

Cela ajoute un comportement au bouton d'envoi pour le désactiver une fois qu'il a été cliqué, et pour afficher "Saving..." au lieu de "Submit".

Rails 4+.

 DEPRECATION WARNING: :disable_with option is deprecated and 
 will be removed from Rails 4.1. Use 'data: { disable_with: 'Text' }' instead.

Ainsi, ce qui précède devient :

submit_tag 'Submit', data: { disable_with: 'Text' }

22voto

Dan Frade Points 616

Integer.ordinalize est une petite méthode sur laquelle je suis tombé par hasard il n'y a pas si longtemps.

1.ordinalize = "1st"
3.ordinalize = "3rd"

21voto

Matt Grande Points 6230

Je suis actuellement amoureux de div_for y content_tag_for

<% div_for(@comment) do %>
  <!-- code to display your comment -->
<% end %>

Le code ci-dessus donne ce résultat :

<div id="comment_123" class="comment">
  <!-- code to display your comment -->
</div>

Je veux que la classe CSS soit comment other_class ? Pas de problème :

<% div_for(@comment, :class => 'other_class') do %>
  <!-- code to display your comment -->
<% end %>

Voulez-vous un span et non un div ? Pas de problème, content_tag_for à la rescousse !

<% content_tag_for(:span, @comment) do %>
<% end %>

# Becomes...

<span id="comment_123" class="comment">
  <!-- code to display your comment -->
</span>

content_tag_for est aussi très bien si vous voulez préfixer vos id . Je l'utilise pour charger les gifs.

<% content_tag_for(:span, @comment, 'loading') do %>
  <%= image_tag 'loading.gif' -%>
<% end %>

# Becomes...

<span id="loading_comment_123" class="comment">
  <img src="loading.gif" />
</span>

18voto

Brian Points 3889

Pour voir une liste des gemmes qui sont installées, vous pouvez exécuter :

gem server

Puis dirigez votre navigateur vers :

http://localhost:8808

Vous obtenez une liste joliment formatée de vos gemmes avec des liens vers rdoc, le web et toutes les dépendances. Beaucoup plus agréable que :

gem list

16voto

John Topley Points 58789

Vous pouvez tirer parti du fait que les définitions des classes Ruby sont actives et que Rails met en cache les classes dans l'environnement de production, pour vous assurer que les données constantes ne sont récupérées dans la base de données qu'au démarrage de votre application.

Par exemple, pour un modèle qui représente des pays, vous définirez une constante qui réalise un Country.all lorsque la classe est chargée :

class Country < ActiveRecord::Base
  COUNTRIES = self.all
  .
  .
  .
end

Vous pouvez utiliser cette constante dans un modèle de vue (peut-être dans une aide de sélection) en faisant référence à Country::COUNTRIES . Par exemple :

<%= select_tag(:country, options_for_select(Country::COUNTRIES)) %>

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