2013-05-29 50 views
2

我使用Rails 4和Ruby 2以及Carrier Wave和jQuery Mobile 1.3,並且用戶有一個擁有徽標的配置文件。我已經在控制檯中測試了後端載波,並且它可以工作。Rails的file_field沒有上傳任何內容

問題是在助手的形式,我做什麼並不重要,但一個file_field將顯示,讓我選擇一個圖像,但它不通過參數。如果我將其更改爲不存在的字段,例如。 =f.file_field :field_not_permitted_in_strong_params它不會翻倒,並且文件選取器可見,如果我將其更改爲=f.text_field :field_not_permitted_in_strong_params,則只有這樣,rails纔會踢入並抱怨該字段不存在。

所以我的問題基本上是,我可以上傳文件客戶端,但它不會通過表單數據發送,或者出現在params散列中,而我所有的其他字段都可以正常工作。

這裏是形式的一個片段:

= form_for(@business_profile, :html => {:multipart => true}, :url => business_profile_path, :validate => true) do |f| 

    =image_tag(@business_profile.logo.url, class: 'business-logo') 
    %div{:data => {:role => 'fieldcontain'}} 
     =f.file_field :logo 

    - # Basic Information 
    %div{:data => {:role => 'collapsible', :collapsed => 'false'}} 
     %h3 
      Basic Information     
     %div{:data => {:role => 'fieldcontain'}} 
      = f.label :name, 'Business name:' 
      = f.text_field :name 
     %div{:data => {:role => 'fieldcontain'}} 
      = f.label :address, 'Address:' 
     = f.text_area :address, class: 'address' 
+0

只是作爲一個側面說明,我覺得你並不需要設置多。這來自FormHelper.file_field的文檔「在form_for塊中使用此方法將把封閉表單的編碼設置爲multipart/form-data。」 – phoet

+0

@phoet現貨上,不幸的是別的東西是負責的問題 – Lee

回答

6

OK就此事花費數小時後,該問題是,jQuery Mobile的默認提交表單使用Ajax和文件cannnot使用Ajax,而無需使用插件來提交等 因此,解決辦法是禁用阿賈克斯這樣的:

= form_for(@business_profile, :url => business_profile_path, :validate => true, :html => { :'data-ajax' => false }) do |f| 
+0

謝謝你!我花了好幾天的時間試圖弄清楚這一點。 :) – xxyyxx

+0

很高興已經得到了協助:) – Lee

+0

你在地球上如何解決這個問題?我很幸運,我遇到了這篇文章。 –

相關問題