Ho cercato dappertutto SO per una risposta, quindi sono sicuro che questo non è stato chiesto prima. Per favore aiutami, o salvatore!Rails: s3_direct_upload - Come posso salvare/utilizzare la risposta dati?
Sto cercando di utilizzare la gemma s3_direct_upload per gestire il caricamento dei file direttamente su S3, ma non so come visualizzare/utilizzare/salvare i dati che apparentemente vengono restituiti dal server S3. Ho letto README per s3_direct_upload una dozzina di volte e fornisce alcuni esempi di codice JS ma non mi dice dove dovrebbe andare quel codice.
Ho lavorato tutta la prima parte del README e impostare AWS config e la semplice jQuery
jQuery ->
$("#s3-uploader").S3Uploader()
Nel mio CoffeeScript (che è incluso in cantiere risorsa correttamente).
ho questo a mio avviso:
<%= 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 %>
voglio all'utente di caricare un work
e compilare alcuni campi. Quando l'utente fa clic sul pulsante "Upload"
, è necessario creare un nuovo work
con l'attributo :url
uguale all'URL del file caricato, nonché gli attributi :name
e :category
uguale al testo immesso dall'utente. Quindi la pagina dovrebbe reindirizzare alla pagina show
dell'opera inviata. Il README fornisce questo esempio:
$('#myS3Uploader').bind "s3_upload_complete", (e, content) ->
$('#someHiddenField').val(content.url)
Ma non ho idea di dove mettere questo bit di codice.
Questo è il mio controllo: (lo so l'azione create
bisogno di cambiamenti, ma non so esattamente quello che ho sperimentato per alcune ore con respond_to
inutilmente..)
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
Anche dopo leggendo il README una dozzina di volte, continuo a non capire cosa sia veramente lo callback_url
, che cos'è callback_param
e come lavorare con loro. Ancora peggio, il caricamento di questa vista dà un errore: a Rails non piace la porzione callback_url: work_path
. Ho dovuto cambiarlo a work_path(@work)
per farlo caricare, ma non sono sicuro se è giusto (dato che non capisco callback_url
).
Dalle domande che tutti gli altri hanno chiesto su s3_direct_upload, sembra che sappiano già come usarlo (le domande sono solo dettagli più piccoli). Quindi sono perso perché non riesco nemmeno a farlo funzionare in primo luogo. Sono un po 'nuovo ai frontend web, quindi ti prego di sopportare me e spiegarmelo. Grazie mille!
Grazie per la rapida risposta. Vedo che il file non viene caricato affatto dopo aver inserito un file. Cosa potrebbe impedire l'upload del file? – Tsubaki
ricevi avvisi dopo aver inserito i codici sopra? Se non guardi la console di Firebug per errori. – tihom
Mi sono reso conto che il codice del modulo dovrebbe avere "s3-uploader" come id invece della classe. Il file ora viene caricato correttamente, ma non ricevo alcun avviso. Questo è molto strano (Dove potrei vedere gli avvisi?) – Tsubaki