2013-05-29 5 views
2

Я использую Rails 4 и Ruby 2 с несущей волной вместе с jQuery Mobile 1.3, а пользователь имеет профиль с логотипом. Я протестировал бэкэнд-материал Carrier Wave на консоли, и он работает.Rails file_field ничего не выгружает

Проблема в помощнике формы, неважно, что я делаю, но отобразится поле file_field и позвольте мне выбрать изображение, но оно не проходит в параметрах. Если я изменю его на поле, которое не существует, например. =f.file_field :field_not_permitted_in_strong_params он не падает и отображается сборщик файлов, если я изменяю его на =f.text_field :field_not_permitted_in_strong_params, только тогда рельсы пинают и жалуются на не существующее поле.

Так что моя проблема в основном, я могу загрузить клиентскую часть файла, но она не отправляется через данные формы или не появляется в хеше 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 Spot on, к сожалению, что-то еще несет ответственность за выпуск – Lee

ответ

6

OK после того, как тратить часы на деле, проблема заключается в том, что JQuery Mobile представляет формы с Ajax по умолчанию, а также файлы cannnot быть представлены с помощью Ajax без использования плагинов и т.д. Таким образом, решение отключить Ajax, как это:

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

СПАСИБО !!!! Я проводил дни, пытаясь понять это. :) – xxyyxx

+0

Рад помочь ... – Lee

+0

Как на ЗЕМЛЕ вы это поняли? Мне повезло, что я столкнулся с этим сообщением. –

Смежные вопросы