我在Rails 3.0.3中有一个使用new:remote =>真功能的表单:
<%= form_for :photo, :remote=>true, :html=>{:id=>"photo_form", :multipart => true}, :url=>{:action=>"photo"} do |p| %>
<div id="photo_container">
<div class="photo">
<% if @card.photo.exists? %>
<%= image_tag @card.photo.url(:full), :id=>"card_photo" %>
<% end %>
</div>
<label class="cabinet">
<%= p.file_field :photo, :class=>"file" %>
</label>
</div>
<% end %>
提交后,照片字段不会传递给控制器操作。但是,如果我删除:remote =&gt; true位,则param传递正常。
这个问题Rails Remote Form does not post form parameters似乎找到了同样的问题,但答案在这里并不匹配:我的HTML显然是有效且格式良好的。
有人在这里有建议吗?我很难过。
答案 0 :(得分:2)
据我所知,您无法远程发送多部分数据。这是因为浏览器安全模型不允许访问<file>
内容,而这些内容是通过远程机制使用的XMLHttpRequest
流式传输的。
远程表单通常等同于没有多部分支持的相同表单。
如果您需要执行异步文件上传,则需要使用<iframe>
并将表单提交到该目标,以防止刷新主页。如果需要,有些库允许框架页面在完成时更新主框架。