0

私がirbにいて、次のようなことをしたとき:

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

これは機能し、返された要素ごとに1行のテキストを出力します(さらに、xmlオブジェクトを返すと思います)。ただし、Railsに移動して、コントローラー、ヘルパー、ビュー、およびレイアウト間を移動すると、xmlオブジェクトがダンプされます。

正当な理由で、私はレール1.2.3とルビー1.8.7を使用していることに言及する必要があります。

グラッツィ!

4

1 に答える 1

0

したがって、あなたが抱えている問題は、書き込みをテンプレートではなくコンソールに配置することです。また、rubyでは、メソッドはデフォルトで最後のオブジェクトを返します。したがって、記述されたメソッドは@ child1をループし、それぞれのテキストをコンソールに出力してから、@ child1オブジェクトを返します。この時点で、<%=%>のerbタグは、オブジェクト(この場合は@ child1)を出力するように指示します。

2つのオプションがあり、どちらかをテンプレートに移動できます。

<% 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 に答える