我是Rails的新手,我正在按照以下帖子将valum的ajax uploader与paperclip结合起来。上传者似乎工作,因为图像发布到数据库和回形针创建的“系统”目录。但上传者每次都会返回一条“失败”的消息。该错误是从fileuploader.js生成的,但我不知道为什么。除了fileuploader.js之外,我正在使用从以下博客文章中复制的代码。我相信我应该提供更多信息以获得有效答案,所以请让我知道我能提供什么。
谢谢
$(function() {
function createUploader(){
var uploader = new qq.FileUploader({
element: $('#file-uploader')[0],
action: '/photos',
multiple: false,
allowedExtensions: ['jpg', 'jpeg', 'png']
});
}
createUploader(); });
我还应该提到我正在使用firebug,而“get”和“post”函数似乎正常工作,没有错误。
以下是来自控制器的代码,但我不认为错误消息来自此处,因为消息不包含“失败”
def create
@photo = Photo.new(params[:photo])
if @photo.save
flash[:notice] = "Successfully created photo."
redirect_to photo_path(@photo)
else
flash[:error] = "Post Error"
redirect_to new_photo_path
end
end
以下是视图代码:
<%= content_for :head do %>
<%= javascript_include_tag "fileuploader" %>
<%= javascript_include_tag "picture_drag_drop" %>
<%= stylesheet_link_tag "fileuploader" %>
<% end %>
<h1>Photos#new</h1>
<p>Find me in app/views/photos/new.html.erb</p>
<%= form_for @photo, :html =>{:multipart=>true} do |f| %>
<%= f.label :title %>
<%= f.file_field :title %>
</div>
<div class="actions">
<%= f.submit "Submit" %>
</div>
<% end %>
<div id="file-uploader">
<p>Please enable JavaScript to use file uploader.</p>
</div>
答案 0 :(得分:0)
看起来我只需将控制器代码更改为:
def create
@photo = Photo.new(params[:photo])
if @photo.save
render :text => '{"success": true}', :content_type => "application/json"
我不完全确定为什么会这样,但我假设原来的“if”响应无法显示,因为页面没有刷新,'render'文本正在从fileuploader输出“success”消息.js文件。无论哪种方式,它都有效!
答案 1 :(得分:0)
我刚刚在ASP.NET实现中遇到了这个问题。除非您的服务器端脚本接收文件输出,否则Valum的文件上传器将向用户显示“失败”
{success:true}
我的脚本输出“ok”,因为我不知道它必须与库附带的示例代码相匹配。