Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

:remote => true not working when a file uploader is used in form

Tags:

Basically when I include and use a file uploader in my form it seems to cancel out the :remote => true functionality and processes the action as HTML in place of JS. any ideas?

like image 898
Chris Bolton Avatar asked Sep 11 '11 04:09

Chris Bolton


2 Answers

I was just faced with the same issue and found the following alternatives to make it work:

Gem remotipart => http://www.alfajango.com/blog/rails-3-ajax-file-uploads-with-remotipart/

jQuery Plugin 'jaxy' => https://github.com/adamlogic/jquery-jaxy

I think I like the first option better. But it's good to have options. =)

like image 156
simaob Avatar answered Nov 12 '22 17:11

simaob


You can't upload files via AJAX, so apparently your request comes as plain HTML, because you don't have anything specific to :js and rails thinks it's just a plain HTML POST request.

https://github.com/JangoSteve/remotipart

gem 'remotipart', '~> 1.2'

and then bundle install

//= require jquery.remotipart

sample_layout.html.erb

<%= form_for @sample, :html => { :multipart => true }, :remote => true do |f| %>
  <div class="field">
    <%= f.label :file %>
    <%= f.file_field :file %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

in Controller

def create
  respond_to do |format|
    if @sample.save
      format.js
    end
  end
end

create.js.erb

// Display a Javascript alert
alert('success!');
<% if remotipart_submitted? %>
  alert('submitted via remotipart')
<% else %>
  alert('submitted via native jquery-ujs')
<% end %>
like image 44
Jai Kumar Rajput Avatar answered Nov 12 '22 17:11

Jai Kumar Rajput