2 votes

set data-* attribute

J'ai une situation où j'ai besoin de définir dinamiquement la valeur de "data-*" sur une div. Le code que j'utilise est le suivant :

  = tag('div', { class: 'agile-carousel',\
                 data: { carousel_list: url_for(format: :json) } }, true)
  = "</div>".html_safe

Ce qui est horrible. De plus, rails ferme la div dans un <div /> ce que chrome et d'autres navigateurs n'apprécient pas du tout (créant ainsi quelques désastres).

Ma solution est donc celle-là. J'aimerais savoir s'il existe une autre façon de procéder.

Mise à jour 1 :

J'ai un petit problème avec ce code :

span class==I18n.locale == locale_used ? "inactive" : nil
  = link_to(I18n.t('locale_name', locale: locale_used),\
            url_for(locale: locale_used))

Si je supprime link_to, cela fonctionne. Remarquez que si j'insère même quelque chose comme | text il renvoie une erreur : syntax error, unexpected keyword_ensure, expecting $end

6voto

meagar Points 85475

Vous pouvez utiliser content_tag au lieu de tag pour produire un <div></div> au lieu d'un <div> mais vous ne devriez pas.

Vous utilisez Mince Así que utiliser Slim :

.agile-carouesel data-carousel_list=url_for(format: :json)

Sortie :

<div class="agile-carouesel" data-carousel_list="some URL"></div>

L'intérêt de Slim et de HAML est de disposer d'une syntaxe fantastiquement laconique pour l'écriture des balises. Vous devriez l'utiliser, plutôt que d'avoir recours aux aides de Rails lorsqu'elles ne sont pas nécessaires. En les utilisant, vous réintroduisez tout l'encombrement de la ponctuation qu'ils sont censés supprimer.

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