Rails печатает строку, когда каждый используется в html.erb - PullRequest
2 голосов
/ 05 июля 2011

Хотя это, конечно, можно сделать аккуратно, поместив код в контроллер или что-то еще, я не могу представить, почему происходит следующее: предположим, что @some_table.some_text содержит 5 строк.добавив следующий код в мой файл html.erb:

<% @some_table.some_text.lines.each do |cur_line| %>
    foo
<% end %>

приводит к 5 foo с, за которыми следуют все строки в @some_table.some_text.Я мог предположить, что это произойдет при использовании <%= %>, но не с <% %>.Очевидно, я не хочу, чтобы показывалось @some_table.some_text.

Что я здесь не так делаю?

1 Ответ

1 голос
/ 05 июля 2011

Так работает метод Ruby lines - он возвращает Enumerable, который не может быть зациклен таким же образом. Для ваших целей попробуйте

<% @some_table.some_text.split(/\n/).each do |cur_line| %>

вместо.

Альтернативно преобразуйте Enemerable в массив перед вызовом each, используя один из методов , например:

<% @some_table.some_text.lines.collect.each do |cur_line| %>
...