Pour une raison quelconque, utiliser la gemme CarrierWave avec Ajax ne semble pas fonctionner pour moi. Est-ce que je fais quelque chose de mal? J’ai bien suivi le CarrierWave Railscast et cela fonctionne sans AJAX, mais dans mon application, je dois utiliser AJAX. Voici mon code:
La liste des parameters après avoir sélectionné un fichier jpeg dans le champ du fichier image:
Parameters: {"item"=>{"remote_image_url"=>""}}
new.html.erb:
create_item_path, :html => {:id => "create_item_form", :multipart => true}) do |f| %>
- Poster une requête ajax JSON avec cors ne fonctionnant pas dans IE10 / Edge
- AngularJS, utilisation des itinéraires sans bouton de rafraîchissement au dos
- Jquery et Ajax pour charger Dynamiquement IFrame
- Select2 charge les données avec Ajax depuis un fichier
- passage de type complexe sous forme de données à un message jquery ajax
"save_button" %>
application.js
$("#create_item_form").submit(function() { $.ajax({ type: "POST", url: $(this).attr("action"), dataType: "script", data: $("#destination_item").sortable('serialize') + "&" + $(this).serialize() }); return false; });
item.rb
class Item < ActiveRecord::Base attr_accessible :description, :image, :remote_image_url belongs_to :user has_many :item_sub mount_uploader :image, ImageUploader end
schema.rb
create_table "item", :force => true do |t| t.integer "user_id" t.ssortingng "title" t.ssortingng "image" t.datetime "created_at" t.datetime "updated_at" end
J’ai la gem carrierWave dans mon gemfile et je n’ai rien changé dans app / uploaders / image_uploader.rb.
Merci pour votre aide!
Il n’y a rien qui puisse être fait sans utiliser une bibliothèque comme Uploadify. En effet, la norme XMLHttpRequest (AJAX) ne prend pas en charge le téléchargement de fichiers. La seule façon de vraiment simuler cela consiste à utiliser un iFrame avec Flash. Uploadify est la meilleure de ces options et contient la meilleure documentation. C’est ce qu’il faut faire côté client (navigateur). Uploadify n’est vraiment pas une gemme ruby, c’est une collection de flash et js permettant au navigateur de “simuler”.
Sur le côté serveur, vous pouvez utiliser carrierwave pour prendre en charge les téléchargements, mais vous avez besoin d’un moyen de les obtenir du côté client. Voici une question extrêmement similaire qui devrait vous donner les instructions dont vous avez besoin.
Rails Carrier Wave avec JQuery Uploader
J’espère que cela t’aides,
Joe
Vous pouvez maintenant télécharger des fichiers via ajax sans utiliser de bibliothèques externes en utilisant FormData ()
VOIR: LINK 1 & LINK 2
Vous ne pouvez pas télécharger un fichier via ajax comme ça. Vous aurez besoin de quelque chose comme: http://www.uploadify.com/