Ruby on rails 为什么";提交;按钮显示在<;表格>;?

Ruby on rails 为什么";提交;按钮显示在<;表格>;?,ruby-on-rails,forms,dom,views,Ruby On Rails,Forms,Dom,Views,这有点令人惊讶。即使在我看来,我的提交标记应该出现在表单中,但它显示在表单之前。html源代码看起来不错,但结果显示和DOM是错误的。不知道是什么把它洗牌了。提交按钮显示在表单之前 你能看到什么吗 查看文件: <%= content_tag :table do %> <%= content_tag :thead do %> <% 5.times do |q| %> <%= content_tag :th, "1" %>

这有点令人惊讶。即使在我看来,我的提交标记应该出现在表单中,但它显示在表单之前。html源代码看起来不错,但结果显示和DOM是错误的。不知道是什么把它洗牌了。提交按钮显示在表单之前

你能看到什么吗

查看文件:

<%= content_tag :table do %>
  <%= content_tag :thead do %>
    <% 5.times do |q| %>
      <%= content_tag :th, "1" %>
    <% end %>
  <% end %>
  <%= content_tag :tbody do %>
    <%= form_tag program_participant_round_survey_path(
        program_id: @program.id, participant_id: @participant.id, round_id: @current_round.id), :method => 'put'  do %>
      <%= render partial: 'value', collection: @values  %>
      <%= submit_tag "Save" %>
    <% end %>
  <% end %>
<% end %>

'put'do%>
html的关键部分:

...
<tr>
  <td>
    Scaling Up vs. Scaling Out
</td>
    <td>
      <input id="values__q0" name="values[]" type="radio" value="q0" />
</td>    <td>
      <input id="values__q1" name="values[]" type="radio" value="q1" />
</td>    <td>
      <input id="values__q2" name="values[]" type="radio" value="q2" />
</td>    <td>
      <input id="values__q3" name="values[]" type="radio" value="q3" />
</td></tr>
      <input name="commit" type="submit" value="Save" />
</form></tbody></table>
  </div>
</div>
</body>
</html>
。。。
放大与缩小
以下是页面在浏览器中的外观:


下面是DOM的外观:

我不知道发生这种情况的确切原因,但我个人会这样做:

<%= form_tag program_participant_round_survey_path(
        program_id: @program.id, participant_id: @participant.id, round_id: @current_round.id), :method => 'put'  do %>
  <%= content_tag :table do %>
    <%= content_tag :thead do %>
      <% 5.times do |q| %>
        <%= content_tag :th, "1" %>
      <% end %>
    <% end %>
    <%= content_tag :tbody do %>        
      <%= render partial: 'value', collection: @values  %> 
    <% end %>
  <% end %>
  <%= submit_tag "Save" %>
<% end %>
“put”do%>

我不知道发生这些事情的确切原因,但我个人会这样做:

<%= form_tag program_participant_round_survey_path(
        program_id: @program.id, participant_id: @participant.id, round_id: @current_round.id), :method => 'put'  do %>
  <%= content_tag :table do %>
    <%= content_tag :thead do %>
      <% 5.times do |q| %>
        <%= content_tag :th, "1" %>
      <% end %>
    <% end %>
    <%= content_tag :tbody do %>        
      <%= render partial: 'value', collection: @values  %> 
    <% end %>
  <% end %>
  <%= submit_tag "Save" %>
<% end %>
“put”do%>

浏览器就是这样处理表中不属于该表的元素的——它假定这些元素是标题,并将它们移动到表之前

在表中有一个
,但在生成的代码中没有


如果将
包装在
中,它将不再在表格前移动。请注意,不建议使用表格进行布局。

这就是浏览器处理表格中不属于表格的元素的方式-它假定这些元素是标题,并将它们移动到表格之前

在表中有一个
,但在生成的代码中没有


如果将
包装在
中,它将不再在表格前移动。请注意,不建议使用表格进行布局。

此外,这是一个品味问题,与您的问题没有直接关系,但我只想做
,而不是
等。我打赌你的标记会更容易阅读,你也不会那么容易受到你现在遇到的问题的影响。有趣的一点@jason——我认为使用content_标记会给我带来一些rails的魔力,但你是对的,直接的标记会更容易阅读!此外,这是一个品味问题,与您的问题没有直接关系,但我不想做
等,我只想做
。我打赌你的标记会更容易阅读,你也不会那么容易受到你现在遇到的问题的影响。有趣的一点@jason——我认为使用content_标记会给我带来一些rails的魔力,但你是对的,直接的标记会更容易阅读!