2010-02-12 5 views
27

Je suis en train de créer des boutons ala Wufoo (Rediscovering the button element)est-il un moyen d'aide de la forme de rails pour produire une étiquette de bouton pour soumettre

Je voudrais écrire le code suivant comme ce qui suit:

<%form_tag search_path, :method => :get, :class => 'search' do %> 
    <%=text_field_tag :search, params[:search] -%> 
    <%=button_tag 'search', :name => nil-%> 
<%end%> 

Pour générer le code HTML suivant (au lieu de l'entrée [type = "submit"] tag)

<button type="submit" class="positive"> 
    <img src="/images/icons/tick.png" alt=""/> 
    Save 
</button> 

Est-ce une méthode existe déjà? Ou devrais-je rouler ma propre aide?

Répondre

36

Vous pouvez utiliser content_tag pour cela. C'est la façon la plus rocailleuse de faire ce que vous voulez. Mais c'est plus long que le HTML brut.

<% content_tag :button :type => :submit, :class => :positive do %> 
    <%= image_tag "icons/tick.png"%> 
    Save 
<% end %> 

qui produit

<button type="submit" class="positive"> 
    <img src="/images/icons/tick.png" alt="Tick"/> 
    Save 
</button> 

Cependant, l'utilisation comme point de départ, vous devriez avoir aucun problème roulant votre propre aide robuste, ou abstraire à une partielle.

+0

Comment un assistant ferait-il cela plus rapidement? – TheExit

+1

@TheExit: Un assistant ne le rendrait pas plus rapide. Je n'ai jamais prétendu que ce serait, en fait la balise de contenu serait plus lente que de simplement entrer le code HTML brut sous forme de chaîne. Mais l'assistant se prête à une réutilisation facile, ce qui le rend plus rapide en termes de temps passé à écrire du code sur les utilisations futures de ce type de bouton. – EmFi

+2

J'ai fait un assistant appelé "button_tag" et il se comporte exactement comme tous les autres rails forment des méthodes d'aide et en tant que tel, il me rend heureux. – jaydel

2

Vous pouvez utiliser l'assistant image_submit_tag pour créer une image soumettre étiquette, plutôt que envelopper le tout dans un bouton:

<% 
image_submit_tag("login.png") 
# => <input src="/images/login.png" type="image" /> 

image_submit_tag("purchase.png", :disabled => true) 
# => <input disabled="disabled" src="/images/purchase.png" type="image" /> 

image_submit_tag("search.png", :class => 'search-button') 
# => <input class="search-button" src="/images/search.png" type="image" /> 
%> 

Cela pourrait ne pas être ce que vous cherchez, si vous avez besoin de la " Enregistrer "le texte doit apparaître au-dessus de <img>

0

Utilisez les tricheurs JQuery Gem https://github.com/plowdawg/jquery_cheats et à votre avis, il est juste

<%= submitimage("/path/to/image.png","Alternate Text") %> 

REMARQUE: texte alternatif est facultatif.