使用content_tag recfactor html字符串

时间:2011-08-12 19:00:36

标签: ruby-on-rails ruby

我使用字符串在一个辅助方法中放置了一个嵌套的无序列表。代码没问题,但如果可能的话,我更愿意使用内容标记方法。这就是我所拥有的:

def show_element_content(element_types, site)
  last = get_element_type_name(element_types.first.name)
  output = "<li>#{last}<ul>"
  if last.nil?
    raise "ElementReturnedNullException - this shouldn't happen."
  else
    element_types.each do |ele|
      if last != get_element_type_name(ele.name)
        last = get_element_type_name(ele.name)
        output << "</ul></li><li>#{last}<ul>"
      end
      output << "<li>#{link_to get_element_content(ele.name), site_element_type_path(site, ele.name)}</li>"
    end
    output << "</ul></li>"
  end
  output.html_safe
end

def get_element_type_name(ele)
  ele.split(" ")[0]
end

def get_element_content(ele)
  words = ele.split(" ")
  words[1..words.size].join(" ")
end

第一种方法是在视图中输出的方法。这是它的作用:

它按空格分割每个element_type,因为每个元素名称在每个元素名称中都是第一个单词。如城市,州或特许经营。这些单词位于较高的LI标签中。像这样:

<ul>
  <li>City</li>
  <li>State</li>
</ul>

然后循环遍历每个元素类型,将每个元素类型作为嵌套列表附加。当第一个单词更改时,它会关闭嵌套列表和li标签,以创建一个新单词。渲染的html如下所示:

<ul>
  <li>City
    <ul>
      <li>CTA 1</li>
      <li>P1 S1</li>
      <li>P1 S2</li>
      <li>Sub2</li>
    </ul>
  </li>
</ul>

我如何使用content_tag执行此操作,因为我根据各种条件打开和关闭标记?我知道在另一个模型中对这些进行分类是有意义的,但是对于表示层,我认为这样做会有点过分。

0 个答案:

没有答案