【问题标题】:Strings not displayed right字符串显示不正确
【发布时间】:2014-01-04 00:52:46
【问题描述】:

所以,我有这个向用户显示电子邮件。

旧代码供参考:

<%= for email in @emails 
    # print the name
    eml = email
    eml 
    puts "<br>"
end
%>

固定、工作、稳定的代码:

<% for email in @emails  %>
    <%= email %>
    <br>
<% end %>
<%= puts @emails.inspect %>

如您所见,这是多行标签的问题。 Bazar 认为它会导致这个问题,但根本不会导致 A 问题。

旧:

而且效果很好。一样东西。所以,EML 是一个带有HIDDEN@HIDDEN.HIDDEN 的红宝石字符串,但是当它显示时,我在渲染页面上得到了这个:["HIDDEN@HIDDEN.HIDDEN"],那么它为什么要这样做呢?检查它,它不是一个哈希。只是一个字符串。这里发生了什么?

【问题讨论】:

  • 你确定它只是一个字符串,而不是一个单元素数组的数组吗? puts @emails.inspecteml.class
  • ["HIDDEN@HIDDEN.HIDDEN"] 是准确的检查结果。没有类类型或任何东西。我错过了一些非常明显的东西吗?
  • 这就是@emails 中的全部内容,只是一个元素数组?那没有意义。检查@emails.classeml.class
  • 等等,你的评论变了。你上一条评论是@emails 还是eml?那绝对是一个数组。
  • @MichaelBerkowski 单个 ERB 标签真的可以跨越 OP 的视图片段中显示的行吗?

标签: ruby-on-rails ruby ruby-on-rails-4 puts


【解决方案1】:

这个语法看起来不太正确。如果这是使用 ERB 在视图中呈现的,您可能需要看起来更像这样的代码:

<% @emails.each do |email| %>
    <%= email %><br />
<% end %>

您编写的方式非常类似于 C#。在 Ruby 中,使用附加到对象的方法更为常见。可以通过使用 each 方法和 Ruby 中称为块的特殊结构来迭代像数组这样的可枚举对象。

http://www.ruby-doc.org/core-2.1.0/Array.html#method-i-each

【讨论】:

  • Ruby 是红宝石。这不是严格的语法。该代码没有任何区别。
  • 另外,我从来没有使用过 C#,而且除了输入和输出之外,我还没有使用 C。
  • 发生的事情是,在您的 ERB 标记中,您告诉它显示该表达式的输出。它的作用是显示“for”循环返回的值,在本例中是您传递给它的数组。如果要打印后跟
    标记的“eml”值,则需要将其隔离在其自己的 中。将其输出字符串“
    ”放到控制台而不是网页。
猜你喜欢
  • 2012-01-23
  • 1970-01-01
  • 2022-07-04
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 2019-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多