我有一个以表格形式(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没有得到正确的回声,所以我的表都被破坏了。救命啊!
答案 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。