form_for 关闭 <form> 标签

Posted

技术标签:

【中文标题】form_for 关闭 <form> 标签【英文标题】:form_for closes <form> tag 【发布时间】:2011-08-31 00:08:15 【问题描述】:

我在一个页面上发生了一种奇怪的情况,我的 &lt;form&gt; 标记被立即关闭,表单的内容独自留下,没有用处。

这是基本的 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 之后和渲染之前立即执行 会发生什么。 (你可以看到我已经进入了“牺牲鸡”的 WAG 模式。有趣的问题...... @jaydel - 我尝试使用 text_field 代替部分。尽管如此,该
标记在包含 text_field 之前是自动关闭的。
【参考方案1】:

我遇到了这个问题并解决了。对我来说,这是因为我在无效的地方渲染了表单。具体来说,我有一些这样的内容:

<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(以及其中的表单)移动到标签中解决了这个问题。

【讨论】:

【参考方案2】:

您使用的是什么版本的 Rails?因为直到 2.3.2 form_for 没有返回值

<% form_for(@review) do |f| %>

注意开头缺少的“=”!

【讨论】:

@rc - 我使用的是 Rails 3,因此包含了 &lt;%=【参考方案3】:

我的解决方法是在结束之前包含提交按钮,并使按钮不显示。

  <%= submit_tag('',style: 'width:0;height:0;display:none;') %>
<% end %>

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

【讨论】:

以上是关于form_for 关闭 <form> 标签的主要内容,如果未能解决你的问题,请参考以下文章

rails form_for标签的自定义文本

在不同位置放置Rails Form_For字段

如何在自定义路由中使用form_for?

这个rails form_for的这个类有啥问题?

Form_for 助手

有没有办法自定义 form_for 按钮?