【问题标题】:Rails prints string when each is used in html.erb在 html.erb 中使用每个字符串时,Rails 会打印字符串
【发布时间】:2011-09-28 17:16:20
【问题描述】:

虽然通过将代码放入控制器或其他东西当然可以做得更整洁,但我无法想象为什么会发生以下情况: 假设@some_table.some_text 包含 5 行。 将以下代码放入我的 html.erb 文件中:

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

产生 5 个foos,后跟@some_table.some_text 中的所有行。 我可以想象在使用&lt;%= %&gt; 时会发生这种情况,但不会在使用&lt;% %&gt; 时发生。 显然,我不希望显示 @some_table.some_text

我在这里做错了什么?

【问题讨论】:

    标签: ruby-on-rails string each erb


    【解决方案1】:

    这正是 Ruby lines 方法的工作方式——它返回一个 Enumerable,不能以同样的方式循环。为了您的目的,请尝试

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

    改为。

    在调用each 之前,或者使用methods 之一将Enemerable 转换为数组,例如:

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

    【讨论】:

    • 谢谢,这行得通。但它仍然让我感到困惑,我认为 &lt;% %&gt; 不应该将任何返回数据呈现为 html 输出。
    猜你喜欢
    • 2016-10-29
    • 2022-01-16
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 2021-05-22
    • 1970-01-01
    • 2015-06-19
    相关资源
    最近更新 更多