Rails自动生成额外的<li>标签</li>

时间:2011-01-11 00:29:12

标签: ruby-on-rails view

这是代码:

    <ul >
            <% items.each do |item|%>
                <%= render :partial => "somepartial", :locals => { :title => item.title} %>
                test_text
            <% end %>
    </ul>

部分:

<li><a><%= title %></a></li>

和输出是:

<ul >
    <li><a>item1</a></li>
    <li>test_text</li>

    <li><a>item2</a></li>
    <li>test_text</li>

    <li><a>item3</a></li>
    <li>test_text</li>
</ul>

&LT; li> test_text周围的标签是额外的。部分和模型没有关系,所以不建议我使用收集方法。当partial在每个循环内部渲染时,rails不会在其周围放置li标签,但除了partial之外的任何东西都会在它们周围生成li标签。

2 个答案:

答案 0 :(得分:0)

而不是:

<% items.each do |item|%>
  <%= render :partial => "items/item", :locals => { :title => item.title} %>
<% end %>

试试这个:

<%= render :partial => "items/item", :collection => items %>

答案 1 :(得分:0)

这个问题对我来说并不完全清楚,所以也许我应该避免回答。 但是,我建议使用haml,这样可以提供更清晰的视图。

您的主要观点将变为:

%ul
  = render :partial => "items/item", :collection => items

,您的部分items\_item.html.haml看起来像这样

%li
  %a
    = item.title 

我在li - 项目中没有看到真正的链接,所以也许您想要这样的内容:

%li
  = link_to item.title, item_path(item)