Rails 5 - 在 application_helper.rb 中定义的渲染数组

Rails 5 - rendering array defined in application_helper.rb

我想使用 nhl_scores gem 获取并在页面上显示最近的 NHL 比赛比分。这就是我在 app/helpers/application_helper.rb:

中定义方法的方式
def scores
    games = NHLScores::Games.new
    s = []
    games.recent.each do |g|
        s.push("#{g.away_team} @ #{g.home_team} - #{g.away_team_score}:#{g.home_team_score}")
    end
    s
end

这就是我显示此数组的方式:

<ul>
    <%= scores.each do |s| %>
        <li><%= s %></li>
    <% end %>
</ul>

结果是:

pic with result

是的,出于某种原因,完整数组显示在最后一个结束 li 标签之后但在结束 ul 标签之前。我该如何删除它?我应该在别处定义 returns 这个数组的方法吗?

试试这个

<ul>
    <% scores.each do |s| %>
        <li><%= s %></li>
    <% end %>
</ul>

<%= %> 再次显示您不想要的整个分数数组(<%= %> 导致显示值)。

不要用<%=输出scores.each的结果,即scores.

您在 .each 块中输出 <li> 标记,然后当 .each 完成时,从 each 返回的值(scores) 被传递给 <%=,它回显给浏览器。

您需要注意何时使用 <%<%=;在这种情况下,您需要 <%.