2010-01-05 6 views
0

Dans mon application, j'ai un modèle de produit qui a entre autres quatre champs pour les chemins d'image. Je l'utilise pour construire un diaporama. Cependant, j'aimerais avoir tous ces chemins dans un grand champ de texte et les séparer par tout ce qui fonctionne (linebreak serait le plus facile à gérer dans le formulaire).Rails - itérer sur les entrées db dans un champ, séparés par des sauts de ligne

Je pensais quelque chose comme:

<% for ... in @screenshots %> 
    <%= lightbox_to(@product.screenshot, @product.screenshot, "screenshots") %> 
<% end %> 

et serait espérerons pour que les résultats suivants:

<%= lightbox_to(@product.screenshot1, @product.screenshot1, "screenshots") %> 
<%= lightbox_to(@product.screenshot2, @product.screenshot2, "screenshots") %> 
<%= lightbox_to(@product.screenshot3, @product.screenshot3, "screenshots") %> 
... 

Votre entrée est grandement appréciée!

Val

Répondre

1

Si vous voulez avoir tous les liens dans un champ de texte, alors vous pouvez utiliser split.

<% @product.screenshots.split.each do |screenshot| %> 
    <%= lightbox_to(screenshot, screenshot, "screenshots" %> 
<% end %> 

Par défaut, il sera divisé sur les espaces blancs. Mais vous pouvez définir la condition de fractionnement par vous-même.

0

screenshots has_many En supposant de @product (et sinon, utilisez @screenshots au lieu de @ product.screenshots ci-dessous).

<% @product.screenshots.each do |screenshot| %> 
    <%= lightbox_to(screenshot, screenshot, "screenshots") %> 
<% end %> 

(cela suppose lightbox_to est invoquée correctement)

Si le produit a vraiment des membres distincts nommés 'screenshot1', 'screenshot2', etc., faites ceci:

<% [:screenshot1, :screenshot2, :screenshot3].each do |screenshot_name| 
    screenshot = @product.send screenshot_name %> 
    <%= lightbox_to(screenshot, screenshot, "screenshots") %> 
<% end %>` 
+0

vous ne pouvez pas utiliser cette solution lorsque les chemins des captures d'écran sont regroupés dans un champ du modèle de produit – jigfox

Questions connexes