Rails - iterare su voci dB in un campo, separati da interruzioni di riga
-
18-09-2019 - |
Domanda
Nella mia domanda ho un modello di prodotti che ha tra le altre cose quattro campi per percorsi delle immagini. Io lo uso per costruire una proiezione di diapositive.
Tuttavia, mi piacerebbe avere tutti quei percorsi in un unico grande campo di testo e separati loro da quello che funziona (linebreak sarebbe il più facile da gestire in forma).
Stavo pensando qualcosa del tipo:
<% for ... in @screenshots %>
<%= lightbox_to(@product.screenshot, @product.screenshot, "screenshots") %>
<% end %>
e sarebbe sperando che ciò si traducono in:
<%= lightbox_to(@product.screenshot1, @product.screenshot1, "screenshots") %>
<%= lightbox_to(@product.screenshot2, @product.screenshot2, "screenshots") %>
<%= lightbox_to(@product.screenshot3, @product.screenshot3, "screenshots") %>
...
Il vostro contributo è molto apprezzato!
Val
Soluzione
Se si desidera avere tutti i link in un campo di testo, quindi è possibile utilizzare spaccatura .
<% @product.screenshots.split.each do |screenshot| %>
<%= lightbox_to(screenshot, screenshot, "screenshots" %>
<% end %>
Per impostazione predefinita sarà diviso in spazi bianchi. Ma è possibile definire condizioni di scissione da soli.
Altri suggerimenti
Supponendo screenshot @product has_many (e se no, utilizzare @screenshots invece di product.screenshots @ in basso).
<% @product.screenshots.each do |screenshot| %>
<%= lightbox_to(screenshot, screenshot, "screenshots") %>
<% end %>
(ciò presuppone lightbox_to viene richiamato correttamente)
Se il prodotto ha davvero i membri separati chiamato 'screenshot1', 'screenshot2', ecc, quindi fare questo:
<% [:screenshot1, :screenshot2, :screenshot3].each do |screenshot_name|
screenshot = @product.send screenshot_name %>
<%= lightbox_to(screenshot, screenshot, "screenshots") %>
<% end %>`