2010-06-19 18 views
2

Je suis un peu un amateur Ruby on Rails, et j'essaie d'imbriquer une balise div dans une balise d'ancrage dans les rails. Je peux le faire fonctionner, mais le code résultant que j'ai écrit est terrible et n'est certainement pas la façon de rails.Comment imbriquer un div à l'intérieur d'une étiquette d'ancrage dans les rails

Voici un exemple de ce que je suis en train d'accomplir en HTML:

<a href="tell-a-friend"> 
<div id="tellafriend"> 
    <strong>Strength in Numbers.</strong><br /> 
    Suggest a friend or colleague to participate in this survey. 
</div> 
</a> 

Voici ce que je suis venu avec le faire en ERB:

<%= link_to content_tag(:div, 
    content_tag(:strong, 'Add your labor rates now.') + 
    content_tag(:br, '') + ' We are counting on you.', :id => 'participate'), 
participate_path %> 

Ou ici je mélange un peu HTML et ERB:

<%= link_to '<div id="results"> 
    <strong>See the results.</strong><br /> 
    Knowledge is power. 
</div>'.html_safe, results_path %> 

Mes deux solutions semblent très laid ... mais le déplacer dans une aide ne semblait pas être la ri C'est une chose à faire, étant donné que le contenu de la DIV change et que j'en affiche seulement 3 sur une seule page.

Donc, si quelqu'un est au courant d'une meilleure façon de le faire, je suis intéressé! Toute combinaison de HTML, ERB et HAML est ok par moi.

Répondre

7
Liens

fonctionnent comme des blocs:

<% link_to '', my_path do %> 
    <div></div> 
<% end %> 
+0

Wow, je ne peux pas croire que je ne savais pas que./cry Mise à jour: Juste testé dans mon application rails3 beta4 ... besoin d'un petit tweak pour le faire fonctionner. Essentiellement <% link_to my_path do%> ... <% end %> –

+0

Ouais, désolé à ce sujet. La partie du link_to ne devrait pas être du tout dans un bloc. Et Rails 3 peut utiliser <% = au lieu de <% dans la ligne d'ouverture. – Jarrod

1

Pour votre information: Une ANCRE entourant un DIV est pas légal en HTML 4.01 Transitional (mais il est en HTML5?) Alors assurez-vous que vous utilisez le bon doc- tapez et testez sur le (s) navigateur (s) cible (s)!

<head> 
<title>a</title> 
</head> 
<body> 
<div> 
<a href="www.google.com"> 
<div>test</div> 
</a> 
</div> 
</body> 
</html> 

Vous pouvez exécuter ce à W3C Validator et changer le DOCTYPE voir pour quel mode (s) ceci est valable. (Assurez-vous de spécifier l'encodage et pour se débarrasser de l'avertissement :-)

+0

Intéressant, mais c'est une question spécifique aux rails. –

+0

Vous pouvez également mettre une étiquette d'ancrage vide devant la div. –

0

Le pire est:

<%= link_to(url, html_options = {}) do %> 
    # name 
<% end %>