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

Posted

技术标签:

【中文标题】Rails 5 - application_helper.rb 中定义的渲染数组【英文标题】:Rails 5 - rendering array defined in application_helper.rb 【发布时间】:2016-12-15 13:28:16 【问题描述】:

我想使用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 标记之前。如何删除它?我应该在别处定义返回这个数组的方法吗?

【问题讨论】:

【参考方案1】:

试试这个

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

&lt;%= %&gt; 再次显示您不想要的整个分数数组(&lt;%= %&gt; 导致显示值)。

【讨论】:

【参考方案2】:

不要使用&lt;%=输出scores.each的结果,即scores

您在.each 块内输出&lt;li&gt; 标记,然后当.each 完成时,从each (scores) 返回的值被传递给&lt;%=,这会回显到浏览器。

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

【讨论】:

以上是关于Rails 5 - application_helper.rb 中定义的渲染数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Webpacker 中使用 Rails Url 助手/Rails 5.1 中的 React-rails

为啥撇号会使 Rails 5.1.5 请求解析崩溃?

Rails 5 ActionController::InvalidAuthenticityToken 错误

无法启动 Rails 服务器:在 SDK 中找不到 Rails/无法激活 bundler-1.25.5

在 rake 任务中使用 rails logger,rails 5

Rails 5.1、Rails 6.1.3 回顾 v3 gem 集成