Rails form_for突然结束

时间:2014-08-09 15:12:43

标签: jquery ruby-on-rails forms ruby-on-rails-4

我试图在tr元素中放置一个表单,如下所示

<%= form_for @meal, html: { class: 'form-inline' }, remote: true do |f| %>
  <td class="form-group"><%= f.text_field :name, class: 'form-control', placeholder: 'Meal' %></td>
  <td class="form-group"><%= f.text_field :calories, class: 'form-control', placeholder: 'Calories' %></td>
  <td class="form-group"><%= f.text_field :meal_time_text, class: 'form-control time-picker', placeholder: 'Time' %></td>
  <td class="form-group"><%= f.text_field :meal_date_text, class: 'form-control date-picker', placeholder: 'Date' %></td>
  <td>
      <%= f.submit nil, class: 'btn btn-primary btn-xs' %>
      <%= link_to t('.cancel', default: t("helpers.links.cancel")),
        meals_path, class: 'btn btn-default btn-xs' %>
  </td>
<% end %>

但是当我检查元素时,我会看到这个

<form accept-charset="UTF-8" action="/meals" class="form-inline" data-remote="true" id="new_meal" method="post"></form>
<td class="form-group"><input class="form-control" id="meal_name" name="meal[name]" placeholder="Meal" type="text"></td>
.... (rest of the td's)

我不明白这里发生了什么,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

如果您查看tr元素,只有th和td元素可以是tr 的直接内容,并且在您的代码中,您将表单作为tr的直接内容

答案 1 :(得分:0)

从技术上讲,这是一个糟糕的html dom结构,整个表单可以包含在单个td中,或者整个表必须包含在form中。

<form>
  <table>
    <tr>
      <td>
        <input type="text" name="first_name">
      </td>
      <td>
        <input type="text" name="last_name">
      </td>
    </tr>
  </table>
</form>

OR

<table>
  <tr>
    <td>
      <form>
        <input type="text" name="first_name">
        <input type="text" name="last_name">
      </form>
    </td>
  </tr>
</table>