#html #ruby-on-rails #ruby #ruby-on-rails-4
#HTML #ruby-on-rails #ruby #ruby-on-rails-4
Вопрос:
Я хочу получить доступ к модели в моем файле application.html.erb. Для этого я определил before_filter в application_controller.rb:
before_filter :populate_ages
protected
def populate_ages
@ages= Ages.all
end
В моем application.html.erb у меня есть следующее:
<%= @ages.each do |age| %>
<p><%= age.name %></p>
<% end %>
Имена отображаются правильно, но я получаю дополнительный вывод, который представляет собой массив @ages . Это выглядит так:
[#amp;<ageid: 1, name: amp;quot;Herrenamp;quot;, created_at: amp;quot;2014-06-26 08:02:58amp;quot;, updated_at: amp;quot;2014-06-26 08:02:58amp;quot;amp;>, #amp;<ageid: 2, name: amp;quot;A-Jugendamp;quot;, created_at: amp;quot;2014-06-26 08:02:58amp;quot;, updated_at: amp;quot;2014-06-26 08:02:58amp;quot;amp;>, #amp;<ageid: 3, name: amp;quot;B-Jugendamp;quot;, created_at: amp;quot;2014-06-26 08:02:58amp;quot;, updated_at: amp;quot;2014-06-26 08:02:58amp;quot;amp;>] </ul>
У меня есть этот код на панели навигации. Итак, моя панель навигации расширена этим дополнительным текстом. Добавление цикла в тело приводит к тому же результату.
Ответ №1:
Вам не нужен знак = в цикле, измените его на:
<% @ages.each do |age| %>
<p><%= age.name %></p>
<% end %>
Имея <%= @ages ...
вы указываете rails для отображения массива
Ответ №2:
Просто напишите как
<% @ages.each do |age| %>
<p><%= age.name %></p>
<% end %>
@ages
является Array
экземпляром. Теперь Array#each
возвращает сам приемник, когда завершена полная итерация. <%=.. %>
означает, что вы указываете выполнить каждый m,метод и распечатать результат #each
метода, с которым вы столкнулись. проблема, с которой вы столкнулись. Таким образом, сообщите, что ваш шаблон выполнил метод, не печатайте его результат, и для этого правильный синтаксис <%.. %>
.