为什么我的HTML格式错误?

时间:2010-04-02 06:33:19

标签: ruby-on-rails ruby

我有一个以表格形式(semantic_form_for)嵌入的表格中的下表。我要求由ruby生成的所有内容都显示出来,但是表格被严重损坏(基本上,标签永远不会形成。

正确绘制表格标题

有14个available_date对象被传递,它们在时间值为1或2之间交替,所以这非常令人难以置信,但可能很容易修复......

<table class="availability_table">
    <tr>
        <th>Date</th>
        <th>Early</th>
        <th>Late</th>
    </tr>
    <% f.fields_for :available_dates do |ad| %>
        <% if ad.object.time == 1  #if this is an early shift, then start the new row %>
            <tr><td><%= ad.object.date.strftime('%a, %b %d, %Y') %></td>
                <td><%= ad.collection_select(:availability , LookupAvailability.all.collect, :id, :name) %></td>
        <% else #otherwise end the row with just a box%>
            <td><%= ad.collection_select(:availability , LookupAvailability.all.collect, :id, :name) %></td></tr>
        <% end %>
    <% end %>
</table>

就像我说的那样,表单功能正常,对象都得到了正确的更新和显示,只是HTML没有得到正确的回声,所以我的表都被破坏了。救命啊!

3 个答案:

答案 0 :(得分:2)

试试这个:

<% f.fields_for :available_dates do |ad| %>
  <tr>
    <% if ad.object.time == 1  #if this is an early shift, then start the new row %>
      <td><%= ad.object.date.strftime('%a, %b %d, %Y') %></td>
      <td><%= ad.collection_select(:availability , LookupAvailability.all.collect, :id, :name) %></td>
    <% else #otherwise end the row with just a box%>
      <td><%= ad.collection_select(:availability , LookupAvailability.all.collect, :id, :name) %></td>
      <td></td>
    <% end %>
  </tr>
<% end %>

我更改了<tr></tr>个位置,并添加了<td></td>来添加空表格单元格。

答案 1 :(得分:0)

您只能在tr分支中关闭else标记。在if-else之后关闭它是有意义的。

答案 2 :(得分:0)

您使用的是ruby 1.8.7吗?

如果是,请尝试删除if和else行旁边的注释。在erb上,评论的唯一有效语法是&lt;%#这是注释%&gt;。也就是说,“#”应该在“&lt;%”之后,而不是在指令之后。在ruby 1.8.7上,它会随机崩溃,破坏渲染的html。