0

J'ai une liste d'images où l'utilisateur peut organiser ses commandes.Sortable_element avec RJS ne fonctionne pas

Lorsque l'utilisateur a importé une image, je souhaite que la liste soit toujours triable.

J'utilise un téléchargement similaire qui a été décrit ici: http://kpumuk.info/ruby-on-rails/in-place-file-upload-with-ruby-on-rails/

S'il vous plaît aider.

Voici le code pour le téléchargement dans le fichier de vue:

<% form_for [:admin, @new_image], :html => { :target => 'upload_frame', :multipart => true } do |f| %> 
    <%= hidden_field_tag :update, 'product_images'%> 
    <%= f.hidden_field :image_owner_id %> 
    <%= f.hidden_field :image_owner_type %> 
    <%= f.file_field :image_file %><br /> 
    or get image from this URL: <%= f.text_field :image_file_url %> 
    <%= f.hidden_field :image_file_temp %><br /> 
    <%= f.submit "Upload Image" %> 
    <% end %> 

Et en vue du contrôleur:

def create 
    @image = Image.new(params[:image]) 
    logger.debug "params are #{params.inspect}" 
    if @image.save 
     logger.debug "initiating javascript now" 
     responds_to_parent do 
     render :update do |page| 
      logger.debug "javascript test #{sortable_element("product_images", :url => sort_admin_images_path, :handle => "handle", :constraint => false)}" 
      page << "show_notification('Image Uploaded');" 
      page.replace_html params[:update], :partial => '/admin/shared/editor/images', :locals => {:object => @image.image_owner, :updated_image => @image} 
      page << sortable_element("product_images", :url => sort_admin_images_path, :handle => "handle", :constraint => false) 
     end 
     end 
     #render :partial => '/admin/shared/editor/images', :locals => {:object => @image.image_owner, :updated_image => @image} 
    else 
     responds_to_parent do 
     render :update do |page| 
      page << "show_notification('Image Upload Error');" 
     end 
     end 
    end 
    end 

Ou, pour reformuler la question:

Courir ceci:

page.replace_html params[:update], :partial => '/admin/shared/editor/images', :locals => {:object => @image.image_owner, :updated_image => @image} 
    page << sortable_element("product_images", :url => sort_admin_images_path, :handle => "handle", :constraint => false) 

N'ajoutera PAS de fonction de liste triable.

S'il vous plaît aider,

Merci

Répondre

0

Trouvé!

Au lieu de:

page.replace_html params[:update], :partial => '/admin/shared/editor/images', :locals => {:object => @image.image_owner, :updated_image => @image} 

Utilisez

page.replace params[:update], :partial => '/admin/shared/editor/images', :locals => {:object => @image.image_owner, :updated_image => @image} 
0

Je pense que le problème pourrait bien être que le triables est créé lorsque la page charges. J'ai déjà rencontré ce problème plusieurs fois. L'ajout d'un nouvel élément à la liste signifie que vous devez rappeler la fonction sortable pour que le nouvel élément soit inclus dans le tri.

Je ne suis pas à l'opposé de prototype/scriptaculous, mais il existe peut-être un moyen de faire en sorte que l'élément triable écoute les événements qui ajoutent des éléments à la liste. jQuery a un ensemble d'événements de reliaison qui répondront aux nouveaux éléments ajoutés au DOM, pourrait être quelque chose de simialr dans les autres bibliothèques.

+0

Alors ... Que proposez-vous? page << alert ('damn rails bugs') "a appelé l'alerte mais en quelque sorte page << sortable_element (" product_images ",: url => sort_admin_images_path,: handle =>" handle ",: contrainte => false) ne reçoit rien. Comment avez-vous résolu ceci? – jaycode

Questions connexes