Рельсы, Скрепка, Ajax Uploader от Valum - PullRequest
1 голос
/ 08 сентября 2011

Я новичок в Rails и слежу за постом ниже, чтобы объединить Ajax-загрузчик valum с paperclip. Похоже, что загрузчик работает, поскольку изображения размещаются в базе данных и в системном каталоге, который создает скрепка. Но загрузчик каждый раз возвращает сообщение об ошибке. Ошибка генерируется из файла fileuploader.js, но я не знаю почему. Помимо файла uploader.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" работают правильно, без ошибок.

Вот код от контроллера, но я не думаю, что отсюда приходит сообщение об ошибке, так как сообщение не содержит «fail»

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 голосов
/ 09 февраля 2012

Я только что столкнулся с этой проблемой в реализации ASP.NET. Загрузчик файлов Valum покажет пользователю «Failed», если ваш серверный скрипт, который получает файл (-ы), не выводит

{success:true}

Мой скрипт выводил "ok", потому что я не знал, что он должен соответствовать коду примера, поставляемому с библиотекой.

0 голосов
/ 08 сентября 2011

Похоже, мне просто нужно было изменить код контроллера на:

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

Я не совсем уверен, почему это сработало, но я предполагаю, что оригинальный ответ «если» не может отображаться, потому что страница не обновилась, а текст «рендеринга» выводит сообщение «success» из fileuploader .js. В любом случае, это сработало!

...