当我在 irb 时,我会做这样的事情:
node_list.each_element { |e| puts e.text }
它可以工作并为每个返回的元素打印一行文本(另外我认为它返回 xml 对象)。但是,当我转到 rails 并在控制器、助手、视图和布局之间移动时,它只会转储 xml 对象。
我应该提一下,我使用 rails 1.2.3 和 ruby 1.8.7 是有充分理由的。
太好了!
当我在 irb 时,我会做这样的事情:
node_list.each_element { |e| puts e.text }
它可以工作并为每个返回的元素打印一行文本(另外我认为它返回 xml 对象)。但是,当我转到 rails 并在控制器、助手、视图和布局之间移动时,它只会转储 xml 对象。
我应该提一下,我使用 rails 1.2.3 和 ruby 1.8.7 是有充分理由的。
太好了!
因此,您遇到的问题是将写入写入控制台而不是模板。此外,在 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
有几种方法可以编写这种类型的方法,但这是我常用的方法。