0

I've been trying to upload an avatar to my project model, but without success.

This is my view:

.inbox-body.light-panel
  %span.blue-light-title Look and feel for your projects
  #audit_trail_container
    = form_tag set_project_logo_project_path(project), :method=>:POST do
          .form-control-group
            .separator-div
              .fileuploadadvanced.fileuploadadvanced-new{"data-provides" => "fileuploadadvanced"}
                %span.btn.btn-white.btn-file
                  %span.fileuploadadvanced-new
                    %i.fa.fa-paper-clip
                    Select file
                  %span.fileuploadadvanced-exists
                    %i.fa.fa-undo
                    Change
                  =file_field_tag :avatar, :class => "upload"
                %span.fileuploadadvanced-preview
                %a.close.fileuploadadvanced-exists{"data-dismiss" => "fileuploadadvanced", href: "#"}
      = link_to "Save", "#", :class=> 'btn submit-btn btn-cl-info set_project_logo', :data=> {:project=> project.id}

which goes to this jquery:

set_project_logo_action = function() {
    return $(".set_project_logo").on('click', function(event) {
        var checked, project_id, selected, type, uploaded_image;
        project_id = $(this).data('project');
            selected = $("#avatar").val();
            return $.post('/projects/' + project_id + "/set_project_logo", {
                selected: selected,
                type: "file"
            }, function(data) {
                if (data.success) {
                    return document.location.reload(true);
                } else {
                    return alert(data.error);
                }
            });
        } else {
            alert("Select an image to become the logo of the project");
            return event.preventDefault;
        }
    });
};

which goes to this method on the project_controller:

def set_project_logo
    set_project
    @project = @project.set_project_logo(params)
    if @project.save
      render :json => {:success => true}
    else
      render :json => {:error => "There was a problem setting the logo."}
    end
  end

which, finally goes to this method on the model:

def set_project_logo(params)
    if params[:selected].present? and params[:type].present?
        self.avatar = params[:selected]
    end
   self
end

On my model i also have the line: mount_uploader :avatar, ProjectAvatarUploader

The line self.avatar = params[:selected] it's executed, but params[:selected] it's "c:\fakepath..". So i'm guessing i'm missing something because nothing is being save on the db either on s3.

Any help?

BabunCanCode
  • 111
  • 1
  • 9

0 Answers0