2017-02-28 2 views
0

J'ai un modèle où je veux tous les enregistrements pour l'association, séparés par 'et' et étant affiché comme un lien ... Jusqu'à présent, j'ai une carte ou une option link_to à l'esprit .... mais je voudrais de combiner les deux:Rails méthode de la carte avec link_to helper combinée?

Mon résultat souhaité est la suivante:

name et name2 et name3 etc. chacun étant affiché comme un lien.

si

name... et name...

L'association fonctionne très bien et me donne toutes les entrées si je

= model.associations.map(&:name).join(' and ') 

Mais 'carte' ne fonctionne pas comme un lien. Est-il possible de combiner en quelque sorte map et link_to?

Pour link_to j'utiliser ..:

-model.associations.each do |a| 
    =link_to a.name, a 

Cette évidence ne serait pas séparer les entrées d'association avec un 'et'. Tout conseil est très apprécié. Merci.

+0

Oui, je veux juste afficher tous les enregistrements en tant que lien comme avec each.do | a |, = link_to a.name, a => mais Je veux que tous les liens soient séparés par un 'et' SAUF le dernier lien ne devrait pas avoir un 'et' après lui –

Répondre

1

Essayez quelque chose comme

= model.associations.map { |a| link_to(a.name, a) }.join(" and ").html_safe 

Mais, je divise la logique entre action et vue. Dans l'action

@items = model.associations 

De l'avis

= @items.map { |a| link_to(a.name, a) }.join(" and ").html_safe 
+0

Nice! Travaux. J'espère que ce n'est pas le pire cas de pratique. Mais votre solution fonctionne très bien! Merci beaucoup!! –

+0

Mon plaisir Monsieur;) – Ursus

+0

Uh, sei italiano! – Ursus

0

La façon la plus simple de faire ce que vous faites est d'ajouter et de suivre le =link_to a.name, a. Puisque vous ne sortir les données dans un modèle, et non l'enregistrer dans une variable pour une réutilisation ultérieure, il n'y a pas besoin d'une carte

+0

Thx. Comment puis-je interdire qu'il y aura un «et» après le dernier enregistrement? Je veux dire quand la boucle .each se termine, je ne veux pas un 'et' à la fin ... Comprenez-vous? THX! –