form_for离开输入元素。轨道

时间:2013-07-04 09:45:49

标签: jquery ruby-on-rails forms

想要创建一个阵型并在其上运行UJS。但是有一个问题:表单标签在输入字段之外?怎么可能?

<tr>
  <td>
    <input name="email_notification[secondary]" type="hidden" value="0">
    <input id="email_notification_secondary_254" name="email_notification[secondary]" type="checkbox" value="1">    
  </td>
</tr>
<form accept-charset="UTF-8" action="/email_notifications/255" class="edit_email_notification" id="edit_email_notification_255" method="post"></form>

所以这就是我设置表格的方法,如果我错了,请纠正我

  <% @setting.email_notifications.each do |en| %>
    <%= form_for en do |u| %>
      <tr>
        <td><%= en.notification.name %></td>
        <td><%= u.check_box :primary, { :id => "email_notification_primary_" + en.id.to_s } %></td>
        <td><%= u.check_box :secondary, { :id => "email_notification_secondary_" + en.id.to_s } %></td>
        <td><%= u.select :interval, @days, { :id => "email_notification_secondary_" + en.id.to_s } if en.notification.required_intervals? %></td>
        <td><%= u.submit %></td>
      </tr>
    <% end %>
  <% end %>

主要问题是,当我尝试逐个元素然后键入时,没有选择任何内容,并且由于表单元素位于输入元素之外,因此可以预期。

$('.email_notification input[type=checkbox]')

更新

如果有任何改变我正在使用twitter bootstrap

1 个答案:

答案 0 :(得分:1)

将表格包裹在表单元素中,如下所示:

<table>
  <% @setting.email_notifications.each do |en| %>
  <tr><td>
     <%= form_for en do |u| %>
        <table>
         <tr>
          <td><%= en.notification.name %></td>
          <td><%= u.check_box :primary, { :id => "email_notification_primary_" + en.id.to_s } %></td>
          <td><%= u.check_box :secondary, { :id => "email_notification_secondary_" + en.id.to_s } %></td>
          <td><%= u.select :interval, @days, { :id => "email_notification_secondary_" + en.id.to_s } if en.notification.required_intervals? %></td>
          <td><%= u.submit %></td>
        </tr>
       </table>
     <% end %>
  </td></tr>
  <% end %>
</table>

您可以在 jsffidle

上看到不同的内容

但只是建议:如果可能的话,建立没有表格的表单。