Rails input 居然跑到 form 外面去了?为什么?请前辈们指点迷津!

kai209209 · 2015年03月04日 · 最后由 kai209209 回复于 2015年03月05日 · 2795 次阅读

今天写一些 html 代码,如下

<div>
  <%= form_for ProductPicture.new, url: create_product_picture_admin_box_path(product), method: :post, remote: true, html: {class: "picture_file_upload", id: "product_#{product.id}_new_product_picture"} do |f| %>
    <%= f.file_field :picture, multiple: true, name: "product_picture[picture]", id: "product_#{product.id}_product_picture_picture" %>
    <%= f.submit "ok", class: "btn btn-info" %>
  <% end %>
</div>

然后在 html 生成的代码如下

<div>
  <form class="picture_file_upload" id="product_103_new_product_picture" enctype="multipart/form-data" action="/admin/boxes/4db6265c/create_product_picture" accept-charset="UTF-8" data-remote="true" method="post"></form>   <input name="utf8" type="hidden" value="✓">
  <input multiple="multiple" name="product_picture[picture]" id="product_103_product_picture_picture" type="file">
  <input type="submit" name="commit" value="ok" class="btn btn-info">
</div>

为什么生成的 input 会跑到 form 外面去了呢?

少了个 end

#2 楼 @kai209209 不要意思,看错了,没少 end

看一下上下文,有没有什么地方漏了东西。最简单的办法就是把你的代码全删除了,一部分一部分地加入,很快就找出问题了。

目测是<%= -%>和<%- end %>中缺几个短横的缘故…… that's why I rather slim then erb

#4 楼 @cassiuschen

应该是 rather than,这说明 slim 还是 erb 都要小心错误,呵呵

这种情况逐步删代码,确定是哪一部分出问题。

#6 楼 @Rei 刚改了我 3 楼的建议,跟你异曲同工啊。

遇到过,好像是 form 不能放到 table 里面的原因

#8 楼 @kikyous 非常感谢,这确实是放在 table 里的,我把 table 去掉,就正常了

#3 楼 @peter #4 楼 @cassiuschen #6 楼 @Rei
非常感谢各位的回帖,最后正解是 8 楼

需要 登录 后方可回复, 如果你还没有账号请 注册新账号