<%= form_with url: "businesses/import_entries" do %>
<% Business.last(5).each do |gle| %>
<div class="field checkbox">
<%= check_box_tag(dom_id(gle), gle.id, class: 'checkbox-input') %>
<%= label_tag(dom_id(gle), gle.business_name, class: 'checkbox-input' )%>
</div>
<% end %>
<% end %>
but when I look in my browser, no form tags have been created!
<div class="actions">
<input name="utf8" type="hidden" value="✓"><input type="hidden" name="authenticity_token" value="rmpmvdjN4XcT2ypqPqtWROL8QfeblwSpRT1wSUZDkw9oGUiiIymxu15cOpM2769UfzvSfNanIpQpDN7avj9EbQ==">
<div class="field checkbox">
<input type="checkbox" name="business_54740" id="business_54740" value="54740" checked="checked" class="label-showing">
<label class="checkbox-input label-showing" for="business_54740">Sally's Spicy Sausages</label>
</div>
<div class="field checkbox">
<input type="checkbox" name="business_54741" id="business_54741" value="54741" checked="checked" class="label-showing">
<label class="checkbox-input label-showing" for="business_54741">Allison's Abbatoir</label>
</div>
<div class="field checkbox">
<input type="checkbox" name="business_54742" id="business_54742" value="54742" checked="checked" class="label-showing">
<label class="checkbox-input label-showing" for="business_54742">Cassies Carpenters</label>
</div>
<div class="field checkbox">
<input type="checkbox" name="business_54743" id="business_54743" value="54743" checked="checked" class="label-showing">
<label class="checkbox-input label-showing" for="business_54743">Pauls Pork Chops</label>
</div>
<div class="field checkbox">
<input type="checkbox" name="business_54744" id="business_54744" value="54744" checked="checked" class="label-showing">
<label class="checkbox-input label-showing" for="business_54744">John's Jerky</label>
</div>
</div>
The reason? In this case I had this form rendering inside another larger form on the page.In another case, I had inserted it into a row of a table without <td> tags:
<table>
<%= form_with url: "businesses/import_entries" do %>
<% Business.last(5).each do |gle| %>
<tr>
<div class="field checkbox">
<%= check_box_tag(dom_id(gle), gle.id, class: 'checkbox-input') %>
<%= label_tag(dom_id(gle), gle.business_name, class: 'checkbox-input' )%>
</div>
</tr>
<% end %>
<% end %>
</table>
In this case, it renders the table and the initial form elements below the <divs> and renders empty <tr> areas!:
<div class="actions">
<div class="outer-div">
<div class="field checkbox">
<input type="checkbox" name="business_54740" id="business_54740" value="54740" checked="checked" class="label-showing">
<label class="checkbox-input label-showing" for="business_54740">Sally's Spicy Sausages</label>
</div>
</div><div class="outer-div">
<div class="field checkbox">
<input type="checkbox" name="business_54741" id="business_54741" value="54741" checked="checked" class="label-showing">
<label class="checkbox-input label-showing" for="business_54741">Allison's Abbatoir</label>
</div>
</div><div class="outer-div">
<div class="field checkbox">
<input type="checkbox" name="business_54742" id="business_54742" value="54742" checked="checked" class="label-showing">
<label class="checkbox-input label-showing" for="business_54742">Cassies Carpenters</label>
</div>
</div><div class="outer-div">
<div class="field checkbox">
<input type="checkbox" name="business_54743" id="business_54743" value="54743" checked="checked" class="label-showing">
<label class="checkbox-input label-showing" for="business_54743">Pauls Pork Chops</label>
</div>
</div><div class="outer-div">
<div class="field checkbox">
<input type="checkbox" name="business_54744" id="business_54744" value="54744" checked="checked" class="label-showing">
<label class="checkbox-input label-showing" for="business_54744">test</label>
</div>
</div><table>
<input name="utf8" type="hidden" value="✓"><input type="hidden" name="authenticity_token" value="UU8Cst033P7dkPuWuZE7OZa3eLGheRD70RZ2iYpebG+XPCytJtOMMpAX62+x1cIpC3DrOuxJNsa9J9gaciK7DQ==">
<tbody><tr>
</tr>
<tr>
</tr>
<tr>
</tr>
<tr>
</tr>
<tr>
</tr>
</tbody></table>
</div>
So, if you’re seeing weird rendering behavior of your form in Rails, carefully check your HTML syntax.