【问题标题】:Rails, Paperclip, Valum's Ajax UploaderRails、Paperclip、Valum 的 Ajax 上传器
【发布时间】:2011-11-12 16:57:08
【问题描述】:

我是 Rails 的新手,我正在关注下面的帖子,将 valum 的 ajax 上传器与回形针结合起来。上传器似乎可以工作,因为图像发布到数据库和回形针创建的“系统”目录。但上传者每次都会返回“失败”消息。该错误是从 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>

【问题讨论】:

  • 您可以提供您的控制器的特定代码(我猜是创建操作)和您的视图(_form ?),
  • 很抱歉打扰,我想通了。我只需要将视图中的错误消息更改为:“render :text => '{"success": true}', :content_type => "application/json" 但我认为必须发布所有强制查看的代码稍微困难一点,这可能有所帮助。我希望没有人浪费太多时间来阅读这篇文章!我很抱歉。
  • 您可以自己写一个答案并接受它。有人可能有类似的问题,你的问题和你的解决方案会帮助他。这就是 StackOverflow 的工作原理。欢迎! :-)

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


【解决方案1】:

看来我只需要将控制器代码更改为:

def create
 @photo = Photo.new(params[:photo])
 if @photo.save
 render :text => '{"success": true}', :content_type => "application/json"

我不完全确定为什么会这样,但我假设原始的“if”响应无法显示,因为页面没有刷新并且“render”文本正在从 fileuploader 输出“success”消息.js。不管怎样,它奏效了!

【讨论】:

  • 使用此方法是否正确保存了照片?还是您只是保存了文件名?
【解决方案2】:

我刚刚在 ASP.NET 实现中遇到了这个问题。 Valum 的文件上传器将向用户显示“失败”,除非您的服务器端脚本接收文件输出

{success:true}

我的脚本输出“ok”,因为我不知道它必须与库附带的示例代码相匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 2012-06-03
    • 2013-09-04
    • 2017-09-03
    • 2023-03-22
    • 2012-09-23
    • 2014-07-17
    相关资源
    最近更新 更多