Sto provando ad aggiungere tag al modello Image inRefineryCMS (provando su 1.0.8 e 2.0.4), ha aggiunto attr_accessible: tag_list, richiesto agisce come taggabile e imposta le viste, ma il problema è che i tag salvano solo quando si modifica / aggiorna un'immagine caricata in precedenza - non quando caricamento per la prima volta, anche se utilizza lo stesso modulo ...
Qualche idea?
Succede su ogni versione di binari e raffineria che ho provato ...
I tag vengono visualizzati nel post quando si esaminano i log, ma non si salva ...
risposte:
1 per risposta № 1Ho avuto un problema simile e alla fine trovo la causa degli attributi extra (nel tuo caso: tag_list) non salvati sul nuovo caricamento dell'immagine.
Se guardi ::Refinery::ImageController
vedrai che l'azione di creazione crea acutamente l'immagine con:
unless params[:image].present? and params[:image][:image].is_a?(Array)
@images << (@image = ::Refinery::Image.create(params[:image]))
else
params[:image][:image].each do |image|
@images << (@image = ::Refinery::Image.create(:image => image))
end
end
params[:image][:image]
è un array quando è abilitato l'uplo di più file multipli (per impostazione predefinita lo è). Ma poi l'azione usa solo i valori dell'array durante la creazione delle immagini, ignorando gli altri parametri.
Scrivo rapidamente la soluzione che segue che consente di salvare gli altri parametri sul caricamento di più immagini:
unless params[:image].present? and params[:image][:image].is_a?(Array)
@images << (@image = ::Refinery::Image.create(params[:image]))
else
images_params = params[:image].dup
images_params.delete(:image)
params[:image][:image].each do |image|
@images << (@image = ::Refinery::Image.create({:image => image}.merge(images_params)))
end
fine
Probabilmente non è la soluzione più elegante ma fa il trucco.
Per usarlo nella tua app, dovrai creare un decoratore per ::Refinery::ImageController
per copiare e modificare l'azione di creazione in esso. (vedi "Estensione di un controller" in Guide della raffineria)