form_for关闭了<form>标签。

10

我在一个页面上遇到了一个奇怪的情况,我的<form>标签立即被关闭,使表单内容孤立无援,无法使用。

以下是基本的ERB代码:

<%= form_for(@review) do |f| %>
   <%= render 'apply/review_form', :locals => {:f => f} %>
   <%= f.text_field :notes %>
<% end %>

看起来很简单,对吧?我已经尝试了局部渲染以及单独使用text_field和另一种使用form_tag的版本,但都没有效果。

HTML代码如下:

<div id="reviewContainer">
  <form accept-charset="UTF-8" action="/reviews" class="new_review" id="new_review" method="post">
  </form>
  <div style="margin:0;padding:0;display:inline">
    <input name="utf8" type="hidden" value="✓">
    <input name="authenticity_token" type="hidden" value="dJSuLMfhBSVKAM3Buwe1NjtBedSLQl062/+oliGbBfE=">
  </div>
  <input id="review_notes" name="review[notes]" size="30" type="text">
  <div class="clear"></div>
</div>

有什么想法吗?这看起来很简单,我不明白为什么它不起作用!


可能有帮助的信息

这个表单不是页面上唯一的表单,它被包含在一个 JQuery Tools Scrollable 中。


我很想知道在form_for之后、render之前立即执行<%=“testing this stuff”%>会发生什么。(尽管我已经进入了“献祭鸡”WAG模式。这是一个有趣的问题...) - user483040
@jaydel - 我尝试使用text_field替换partial,但是那个<form>标签在text_field被包括在内之前就自我关闭了。 - sscirrus
3个回答

5

我遇到了这个问题并解决了它。对我来说,原因是我在一个无效的位置渲染表单。具体来说,我的一些内容如下:

<table>
  <tr>
    <td>
      Stuff I might want to edit
    </td>
    <div style="display: none">
      <%= form_for thing_i_might_want_to_edit %>
        ...
      <% end %>
    </div>
  </tr>
</table>

将隐藏的 div(及其中的表单)移动到 `` 标签中解决了问题。

0
我的解决方法是在结尾前包含提交按钮,并使按钮不显示。
  <%= submit_tag('',style: 'width:0;height:0;display:none;') %>
<% end %>

这将结束标签放在我需要的位置。


0
你使用的Rails版本是什么?因为在2.3.2之前,form_for没有返回值。
<% form_for(@review) do |f| %>

请注意开头缺少“=”符号!

@rc - 我正在使用Rails 3,因此包含了 <%= - sscirrus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接