2011-01-07 37 views
1

我在Rails的3.0.3的形式,使用新:遠程=>真正的功能:Rails 3中遠程表不傳遞參數

<%= 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 => true位,則param傳遞得很好。

這個問題,Rails Remote Form does not post form parameters,似乎找到了同樣的問題,但答案在這裏不符:我的HTML顯然是有效的,格式良好。

任何人都有建議嗎?我很難過。

+0

請確保您包含javascript lib – s84 2011-01-07 18:28:39

回答

2

據我所知,你不能遠程發送多部分數據。這是因爲瀏覽器安全模式不允許訪問<file>內容,這需要通過遠程機制使用的XMLHttpRequest進行流式傳輸。

遠程表單通常等同於沒有多部分支持的相同表單。

如果您需要執行異步文件上傳,您需要使用並將表單提交給該目標以防止刷新主頁。如果需要,有些庫允許框架頁面在完成後更新主框架。

+0

我還要補充一點,XMLHttpReq(AJAX)的大小是有限制的。我不認爲你不能通過AJAX發佈一個很大的文件... – sethvargo 2011-01-07 18:04:31