form_for关闭<form>标签</form>

时间:2011-05-23 09:06:11

标签: html ruby-on-rails ruby-on-rails-3 forms

我在<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中。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

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

注意开头时缺少“=”!

答案 2 :(得分:0)

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

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

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