Rails,Paperclip,Valum的Ajax Uploader

时间:2011-09-08 05:52:23

标签: ruby-on-rails ajax file-upload

我是Rails的新手,我正在按照以下帖子将valum的ajax uploader与paperclip结合起来。上传者似乎工作,因为图像发布到数据库和回形针创建的“系统”目录。但上传者每次都会返回一条“失败”的消息。该错误是从fileuploader.js生成的,但我不知道为什么。除了fileuploader.js之外,我正在使用从以下博客文章中复制的代码。我相信我应该提供更多信息以获得有效答案,所以请让我知道我能提供什么。

谢谢

http://mooooooooooo.wordpress.com/2010/12/03/paperclip-valums%E2%80%99s-file-uploader-and-middleware-continued/

$(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>

2 个答案:

答案 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”,因为我不知道它必须与库附带的示例代码相匹配。