2

コレクションが祖先オブジェクトであるcontent_tagを使用して、以下に示す構造をレンダリングしたいと思います。

  <ul>
    <li>
       <a>Fruits</a>
     <ul>
       <li>
         <a>Apple</a>
        </li>
        <li>
            <a>Orange</a>
        </li>
      </ul>
     </li>
     <li>
        <a>Colours</a>
     </li>
   </ul>
4

2 に答える 2

6

それが答えだと思います、コミュニティ、間違っている場合はこの投稿を編集して微調整してください。

このようなヘルパーメソッドを作成します

def nested_groups(groups)
   content_tag(:ul) do
      groups.map do |group, sub_groups|
         content_tag(:li, group.name +  nested_groups(sub_groups))
      end.join.html_safe
   end  
end

次に、ancestry オブジェクトをビューのメソッドに渡します。

<%= nested_groups(@groups.arrange) %>

ul-list を正しい方法でレンダリングします。

于 2013-01-21T02:42:33.150 に答える
3

次のコードは、適切にネストされたリストを生成します。たとえば、 W3schoolsを参照してください。

最初にヘルパーを作成します。

module AttributeHelper
  def nested_attributes(attributes)
    content_tag :ul do
        attributes.each do |attribute|
            concat(content_tag(:li, attribute.name))
            if attribute.has_children? 
                concat(nested_attributes(attribute.children))
            end
        end
    end
  end
end

次に、ビューでヘルパー メソッドを使用します。

= nested_attributes(@attributes.roots)
于 2013-06-04T14:46:44.240 に答える