Rails - перебирать записи БД в одном поле, разделенные переносами строк - PullRequest
0 голосов
/ 05 января 2010

В моем приложении есть модель продуктов, в которой, среди прочего, есть четыре поля для путей изображения. Я использую это для создания слайд-шоу.

Тем не менее, я хотел бы, чтобы все эти пути были в одном большом текстовом поле и разделяли их любыми работами (разрыв строки будет проще всего обрабатывать в форме).

Я думал что-то вроде:

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

и надеемся, что это приведет к:

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

Ваш вклад очень важен!

Val

Ответы [ 2 ]

1 голос
/ 06 января 2010

Если вы хотите, чтобы все ссылки были в одном текстовом поле, вы можете использовать split .

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

По умолчанию он разделяется на пробелы. Но вы можете сами определить условие расщепления.

0 голосов
/ 06 января 2010

Предполагается, что @product has_many снимки экрана (и если нет, используйте @screenshots вместо @ product.screenshots ниже).

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

(предполагается, что lightbox_to вызывается правильно)

Если у продукта действительно есть отдельные элементы с именами 'screenshot1', 'screenshot2' и т. Д., То сделайте следующее:

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