.row .span12 .tabbable %ul.nav.nav-tabs %li.active = link_to "Proposal", "#proposal-content", "data-toggle"=>"tab" %li = link_to "Attachments", "#attachment-content", "data-toggle"=>"tab" .tab-content #proposal-content.tab-pane.active = render 'proposal/proposal_form' #attachment-content.tab-pane = form_for EventAttachment.new, :url => conference_proposal_event_attachment_index_path(@conference.short_title, @event), :html => { :multipart => true, :id => "fileupload" } do |f| %table.table.table-striped %thead %th %th %b Filename %th %b Title %th %b Size %th %b Public %th %tbody.files .row-fluid.fileupload-buttonbar .btn.btn-success.fileinput-button %i.icon-plus.icon-white Add files... = f.file_field :attachment = f.hidden_field :event_id, :value => @event.id :javascript $(document).ready( function() { $('#fileupload').fileupload(); $('#fileupload').bind('fileuploadsubmit', function (e, data) { var inputs = data.context.find(':input'); if (inputs.filter('[required][value=""]').first().focus().length) { return false; } data.formData = inputs.serializeArray(); }); $.getJSON($('#fileupload').prop('action'), function (files) { var fu = $('#fileupload').data('fileupload'), template; fu._adjustMaxNumberOfFiles(-files.length); template = fu._renderDownload(files) .appendTo($('#fileupload .files')); fu._reflow = fu._transition && template.length && template[0].offsetWidth; template.addClass('in'); $('#loading').remove(); }); } ); :plain