Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 每个_元素的行为不符合预期_Ruby On Rails_Xml_Rexml - Fatal编程技术网

Ruby on rails 每个_元素的行为不符合预期

Ruby on rails 每个_元素的行为不符合预期,ruby-on-rails,xml,rexml,Ruby On Rails,Xml,Rexml,当我在irb时,我会这样做: node_list.each_element { |e| puts e.text } 它工作并为每个返回的元素打印一行文本(另外我认为它还返回xml对象)。然而,当我转向rails,让东西在控制器、助手、视图和布局之间移动时,它只是转储xml对象 我应该提到,我使用rails 1.2.3和ruby 1.8.7是有充分理由的 格拉茨 所以您面临的问题是将写操作放在控制台上,而不是放在模板上。此外,在ruby中,默认情况下,a方法将返回其最后一个对象。因此,您编写的方

当我在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 %>

#注意你的观点是什么样的,我想我知道你的问题所在。也许这是最重要的一行:where tol_get_names只是一个函数,它实现了我上面写的功能。
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