0

当我在 irb 时,我会做这样的事情:

node_list.each_element { |e| puts e.text }

它可以工作并为每个返回的元素打印一行文本(另外我认为它返回 xml 对象)。但是,当我转到 rails 并在控制器、助手、视图和布局之间移动时,它只会转储 xml 对象。

我应该提一下,我使用 rails 1.2.3 和 ruby​​ 1.8.7 是有充分理由的。

太好了!

4

1 回答 1

0

因此,您遇到的问题是将写入写入控制台而不是模板。此外,在 ruby​​ 中,a 方法将默认返回其最后一个对象。因此,您编写的方法将遍历@child1,将每个文本打印到控制台,然后返回@child1 对象,此时您的 <%= %> erb 标签告诉它打印对象(在这种情况下为@child1)

您有两个选择,您可以将其移出到模板中:

<% tol_get_names(@child1) do |e| %> #note just <% and not <%=
  <%= e.text %>
<% end %>

或者构建您的方法,使其循环构建一个字符串,然后返回该字符串而不是原始对象:

def tol_get_names(child)
  texts = [] #empty array for all our values
  child.each_element { |e| 
    texts << e.text #add the text string to our array
  end
  texts.join(", ") #build a string and seperate it with a comma
end

有几种方法可以编写这种类型的方法,但这是我常用的方法。

于 2012-02-08T14:08:27.710 回答