Rails 3远程表单不通过参数

时间:2011-01-07 17:55:16

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

我在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显然是有效且格式良好的。

有人在这里有建议吗?我很难过。

1 个答案:

答案 0 :(得分:2)

据我所知,您无法远程发送多部分数据。这是因为浏览器安全模型不允许访问<file>内容,而这些内容是通过远程机制使用的XMLHttpRequest流式传输的。

远程表单通常等同于没有多部分支持的相同表单。

如果您需要执行异步文件上传,则需要使用<iframe>并将表单提交到该目标,以防止刷新主页。如果需要,有些库允许框架页面在完成时更新主框架。