我在 Rails 3.0.3 中有一个使用新的 :remote=>true 特性的表单:
<%= 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 %>
提交后,照片字段不会传递给 Controller 操作。但是,如果我删除 :remote=>true 位,则参数传递得很好。
这个问题,Rails Remote Form does not post form parameters ,似乎发现了同样的问题,但答案在这里不匹配:我的 HTML 显然有效且格式正确。
这里有人有什么建议吗?我很难过。
最佳答案
据我所知,您无法远程发送多部分数据。这是因为浏览器安全模型不允许访问 <file>
内容,需要通过 XMLHttpRequest
进行流式传输由远程机制使用。
远程表单通常等同于没有多部分支持的相同表单。
如果您需要进行异步文件上传,则需要使用 <iframe>
并将表单提交到该目标以防止刷新主页。如果需要,有些库允许框架页面在完成时更新主框架。
关于javascript - Rails 3 远程表单不传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4628644/