Я искал все ответы, поэтому я уверен, что этого раньше не спрашивали. Пожалуйста, помогите мне, спаситель!Rails: s3_direct_upload - Как сохранить/использовать ответ данных?
Я пытаюсь использовать камень s3_direct_upload для обработки файлов непосредственно на S3, но я просто не знаю, как видеть/использовать/сохранять данные, которые, по-видимому, возвращаются с сервера S3. Я читал README для s3_direct_upload дюжину раз, и он дает некоторые примеры фрагментов кода JS, но не говорит мне, куда должен идти этот код.
Я работал в первой части README и создать AWS конфигурации и простой JQuery
jQuery ->
$("#s3-uploader").S3Uploader()
В моей CoffeeScript (который входит в трубопровод активов правильно).
У меня есть это на мой взгляд:
<%= s3_uploader_form callback_url: work_path, callback_param: "work[url]", class: "s3-uploader" do %>
<%= file_field_tag :file, multiple: false %>
<% end %>
<%= form_for(@work) do |f| %>
<%= f.label :name, "Title" %>
<%= f.text_field :name %>
<%= f.label :category, "Category" %>
<%= f.text_field :category %>
<br>
<%= f.submit "Upload", id: "btn-upload-work", class: "btn btn-large btn-warning btn-upload" %>
<% end %>
Я хочу, чтобы пользователь, чтобы загрузить work
и заполнить в некоторых областях. Когда пользователь нажимает кнопку "Upload"
, должен быть создан новый work
с атрибутом :url
, равным URL-адресу загруженного файла, а также атрибутам :name
и :category
, равным тексту, введенному пользователем. Затем страница должна быть перенаправлена на страницу представленной работы. В README приведен пример:
$('#myS3Uploader').bind "s3_upload_complete", (e, content) ->
$('#someHiddenField').val(content.url)
Но я понятия не имею, где положить этот бит кода.
Это мой контроллер: (Я знаю, что create
действие нуждается в изменениях, но я не знаю точно, что я экспериментировал в течение нескольких часов с respond_to
безрезультатно..)
def show
@work = Work.find(params[:id])
end
def new
@work = Work.new
end
def create
@work = current_user.works.new(work_params)
if @work.save
flash[:success] = "Work successfully submitted!"
redirect_to @work
else
render 'new'
end
end
private
def work_params
params.require(:work).permit(:name, :category, :url)
end
Даже после того, как прочитав README дюжину раз, я до сих пор не понимаю, что такое callback_url
, что такое callback_param
, и как с ними работать. Хуже того, загрузка этого представления дает ошибку. Rails не нравится часть callback_url: work_path
. Мне пришлось изменить это на work_path(@work)
, чтобы загрузить его, но я не уверен, правильно ли это (так как я не понимаю callback_url
).
Из вопросов, которые все остальные задавали о s3_direct_upload, кажется, что они уже знают, как им пользоваться (вопросы - это только более мелкие детали). Поэтому я потерялся, потому что я даже не могу заставить его работать в первую очередь. Я немного новичок в веб-интерфейсах, поэтому, пожалуйста, несите меня и объясните мне это. Спасибо!
Спасибо за быстрый ответ. Я вижу, что файл не загружается вообще после ввода файла. Что может помешать загрузке файла? – Tsubaki
Вы получаете предупреждения после ввода вышеуказанных кодов? Если вы не смотрите на консоль firebug для ошибок. – tihom
Я понял, что код формы должен иметь «s3-uploader» как id вместо класса. Файл теперь загружается отлично, но я не получаю никаких предупреждений. Это очень странно. (Где я могу увидеть предупреждения?) – Tsubaki