当我在irb时,我做了这样的事情:
node_list.each_element { |e| puts e.text }
它可以工作并为每个返回的元素打印一行文本(另外我认为它返回xml对象)。但是,当我转向rails并在控制器,帮助器,视图和布局之间移动时,它只会转储xml对象。
我应该提一下,我有充分的理由使用rails 1.2.3和ruby 1.8.7。
的Gratzi!
答案 0 :(得分: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
你可以通过几种方法编写这种方法,但这是我常用的方法。