2009-10-09 8 views
0

J'essaie de créer une application Ruby on rails en utilisant l'effet de glisser-déposer intégré. Comme je suis novice dans le langage ruby, j'ai fini avec ce code en regardant beaucoup de documentation mais je n'arrive pas à comprendre pourquoi le code du contrôleur n'est pas exécuté.Ruby on Rails glisser-déposer ne fonctionnera pas

Dans la page html.erb l'origine div

<% for therm in @therms %> 
    <tr valign="top" class="<%= cycle('list-line-odd', 'list-line-even') %>"> 

    <td> 
    <% therm_id = "therm_#{therm.id}" %> 
    <li class="origin" id='<%= therm_id %>'><%= therm.id %></li> 
    </td> 

L'objectif

<%= image_tag "dragtrash.png", :id=>'trash'%> 

Et j'identifier la cible de baisse

<%= drop_receiving_element('trash', 
:accept => 'origin', 
:complete => "$('spinner').hide();" , 
:before => "$('spinner').show();" , 
:hoverclass => 'hover', 
:with => "'paramid=' + encodeURIComponent(element.id.split('_').last())" , 
:url => {:action=>:trash_therm})%> 

Et enfin dans mon contrôleur

def trash_therm 
redirect_to(:action => 'create') 
    end 

Lorsque je dépose l'élément dans la cible, le contenu déposé colle à la cible. Si la cible n'a pas "attrapé" l'objet, elle revient à sa position d'origine. Je ne comprends pas pourquoi le code dans le contrôleur n'est pas exécuté.

Merci d'avance pour l'aide

+0

Avez-vous regardé ce que fait le javascript? – BaroqueBobcat

+0

Comment puis-je le voir? Thansks – SilverRuby

Répondre

0

Le code dans le contrôleur aurait été exécuté. Le problème est qu'il redirige la requête ajax vers la nouvelle URL et non le navigateur. Vous devez ajouter une redirection JavaScript à l'option :complete.

window.location.href = url 
+0

essayées avec <% = drop_receiving_element ('' trash, : accepter => 'origine', : complète => "window.location.href = www.google.com", : avant => « $ ('spinner'). show(); ", : hoverclass => 'hover', : avec =>" 'paramid =' + encodeURIComponent (element.id.split ('_'). last()) " , : url => {: action =>: trash_therm})%> Je pense que les options: complète et: avant ne sont pas nécessaires, comme dans l'exemple de http://ruby.dzone.com/news/drag- drop-rails puisque j'essaye d'avoir le code du contrôleur exécuté. – SilverRuby

+0

Ils ne sont pas nécessaires si vous souhaitez que l'action du contrôleur s'exécute sans affecter le navigateur. Si vous voulez rediriger le navigateur, c'est plus compliqué. Exécutez votre application avec script/serveur et vérifiez la sortie lorsque vous faites votre glisser-déposer. Est-ce qu'il enregistre l'action trash_therm appelée? – BaroqueBobcat