2009-05-23 3 views
6

У меня есть базовый тест приложений rails с пользовательской моделью, в которой есть поле с фотографиями, которое обрабатывается с помощью скрепки. Я создал представления, чтобы иметь возможность создавать/редактировать пользователя, а загрузка фотографий работает красиво.Использование Rails с Paperclip и SWFUpload

<h1>Editing user</h1> 

<% form_for :user, @user, :url => user_path(@user), :html => { :method => "put", :multipart => true } do |f| %> 
    <%= f.error_messages %> 

    <p> 
    <%= f.label :first_name %><br /> 
    <%= f.text_field :first_name %> 
    </p> 
    <p> 
    <%= f.label :last_name %><br /> 
    <%= f.text_field :last_name %> 
    </p> 
    <p> 
    <%= f.label :file %><br /> 
    <%= f.file_field :file %> 
    </p> 

    <p> 
    <%= f.label :photo %><br /> 
    <%= f.file_field :photo %> 
    <p> 
    <%= f.submit 'Update' %> 
    </p> 

<% end %> 

<%= link_to 'Show', @user %> | 
<%= link_to 'Back', users_path %> 

Затем я хотел интегрировать SWFUpload в мое приложение. Я попытался следовать этому tutorial и без успеха запустить test project: кнопка обзора не открывает диалоговое окно файла и не отображается ошибка # 2176, которая относится к методу selectFiles().

Во-первых, проблема связана с Flash v.10, которая несовместима со старой версией SWFUpload (2.1.0), включенной в проект: selectFiles() теперь устарела. Поэтому я попытался перейти на версию SWFUpload v. 2.2.0, в которой теперь используется параметр button_placeholder_id, но я не могу заставить работать какой-либо пример.

Так что я немного потерял информацию о том, как использовать инициализацию SWFUpload и о ней и использовать ее в своей форме, чтобы я мог загрузить и сохранить фотографию. Любая помощь?

ответ

1

Вы можете попробовать использовать easy-swf-upload plugin

Вам просто нужно вставить один помощник и, возможно, принять CSS

1

Для прохождения фото поле идентификатора файла в SWFUpload, идентификатор вашей области будет user_photo (от < входного типа = «Файл» ид = «user_photo» .../>), так инициализирует SWFUpload с

var swfupload = new SWFUpload({button_placeholder_id:'user_photo' ... }); 

который заменит поле файла загрузчиком swf.

Имейте в виду, что по умолчанию файл будет загружен в качестве параметра Filedata. Технически вы можете изменить это на «user [photo]», но, по-видимому, это не работает в Linux, поэтому вам, возможно, придется немного подпрыгнуть на серверной стороне, чтобы переместить его в нужное место.