Jquery Carrier未在数据库上保存文件
我一直试图上传一个头像到我的项目模型,但没有成功 我的看法是:Jquery Carrier未在数据库上保存文件,jquery,ruby-on-rails,upload,carrierwave,Jquery,Ruby On Rails,Upload,Carrierwave,我一直试图上传一个头像到我的项目模型,但没有成功 我的看法是: .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
.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}
这将转到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;
}
});
};
在项目_控制器上使用以下方法:
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
最后,在模型上使用此方法:
def set_project_logo(params)
if params[:selected].present? and params[:type].present?
self.avatar = params[:selected]
end
self
end
在我的模型上,我还有一行:mount\u uploader:avatar,ProjectAvatarUploader
行self.avatar=params[:selected]
已执行,但params[:selected]
为“c:\fakepath..”。所以我猜我遗漏了一些东西,因为在s3上db上也没有保存任何东西
有什么帮助吗?试试self.avatar=params[:selected][:datafile]params[:selected]。读了吗?如果我打印params[:selected],我会得到以下信息:{“0”=>{“name”=>“utf8”,“value”=>“✓"}, "1“=>{”name“=>”authenticity_token“,”value“=>”1Y9EGZMTHTVKQ6AUNVEZDONOSKAZ0XO3GCRK4XF4C=“}}}谢谢!它正在工作