我想访问application.html.erb文件中的模型。为此,我在application_controller.rb中定义了一个before_filter:
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。它看起来像这样:
[#<ageid: 1, name: "Herren", created_at: "2014-06-26 08:02:58", updated_at: "2014-06-26 08:02:58">, #<ageid: 2, name: "A-Jugend", created_at: "2014-06-26 08:02:58", updated_at: "2014-06-26 08:02:58">, #<ageid: 3, name: "B-Jugend", created_at: "2014-06-26 08:02:58", updated_at: "2014-06-26 08:02:58">] </ul>
我在导航栏中有此代码。所以我的导航栏是通过这个附加文本扩展的。在正文中添加循环会导致相同的输出。
答案 0 :(得分:1)
您不希望循环上出现=符号,请将其更改为:
<% @ages.each do |age| %>
<p><%= age.name %></p>
<% end %>
让<%= @ages ...
让你告诉rails显示数组
答案 1 :(得分:1)
只需写为
<% @ages.each do |age| %>
<p><%= age.name %></p>
<% end %>
@ages
是Array
个实例。完全迭代完成后,Array#each
会返回接收器本身。 <%=.. %>
表示您正在告诉执行每个m,方法并打印#each
方法的结果,这是您遇到的问题。因此,请告诉您的模板执行该方法,不要打印它的结果,并且正确的语法是<%.. %>
。