2015-02-27 1 views
0

J'ai un titre dans mon code HTML qui affiche du texte via Ruby (en passant, il y a de nombreux exemples de ces cellules):Limiter l'affichage du titre aux utilisateurs admin - aide HTML personnalisé

<td title="id:<%= alert.id %>">Hello</td> 

je serai la création d'une méthode d'assistance (par exemple):

def admin? 
    # check if this user is an admin 
end 

Comment puis-je utiliser cette méthode d'aide pour limiter l'affichage du titre à l'utilisateur admin?

Répondre

0

je devais créer une aide pour vérifier les utilisateurs admin:

def admin? 
    # check if this user is an admin 
end 

Ensuite, je devais créer une aide personnalisée qui renvoie un titre pour un utilisateur admin:

def generate_title(this) 
    if admin? 
     "id:#{this}" 
    end 
    end 

Et enfin mettre à jour ma cellule pour utiliser l'assistant personnalisé:

<td title="<%= generate_title(alert.id) %>">Hello</td> 

Tout est sur le custom helpers!

0
<%= content_tag :td, 'Hello', title: ("id:#{alert.id}" if admin?) %> 
+0

Je travaille dans une balise HTML et je ne change pas! :) –

1

Faire quelque chose comme ceci:

<td <%="title=\"id:#{alert.id}\"" if admin?%>>Hello</td> 
+0

C'est une très belle réponse et je vais vous donner un vote up mais je vais mettre en œuvre et accepter [ma réponse] (http://stackoverflow.com/a/28765775/3507417) parce que j'ai beaucoup d'exemples de ces cellules et je veux garder autant de logique hors de la vue que possible. ** Dans ma situation **, il y aura plus de 20 cas de 'si admin? –

0

Vous pouvez utiliser le « court si » variante, de décider quoi afficher en ligne, à l'intérieur de votre attribut de balise HTML:

title="id:#{admin? ? alert.id : ''}" 

En savoir plus sur le short-if format.

+0

Belle réponse aussi Daniel mais personnellement je vais avec l'aide car j'aurai beaucoup de '?' S et ':' s partout. Merci. –