2009-10-09 1 views
0

Я пытаюсь создать приложение Ruby on rails, используя встроенный эффект drag-drop drag-and-drop.Ruby on Rails drag and drop не работает

Поскольку я новичок в рубиновом языке, я получил этот код при просмотре многих документов, но не могу понять, почему код контроллера не выполняется.

На странице html.erb происхождение ДИВА

<% 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> 

Мишень

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

И я определяю цель снижения

<%= 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})%> 

И, наконец, в моем контроллере

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

Когда я бросаю предмет в цель, выпавшее содержимое прилипает к цели. Если цель не «поймает» элемент, он вернется в исходное положение. Я не понимаю, почему код в контроллере не выполняется.

Спасибо заранее за помощь

+0

Вы посмотрели, что делает javascript? – BaroqueBobcat

+0

Как я могу это увидеть? Thansks – SilverRuby

ответ

0

код в контроллере может быть выполнена. Проблема в том, что он перенаправляет запрос ajax на новый URL-адрес, а не на браузер.

Вам необходимо добавить javascript для перенаправления на :complete.

window.location.href = url 
+0

Пробовал с <% = drop_receiving_element ('мусор', : принимаем => 'происхождение', : полная => "window.location.href = www.google.com", : перед тем => «$ ('spinner'). show(); ", : hoverclass => 'hover', : with =>" 'paramid =' + encodeURIComponent (element.id.split ('_'). last()) " , : url => {: action =>: trash_therm})%> Я думаю, что варианты: complete и: before не нужны, как на примере http://ruby.dzone.com/news/drag- когда я пытаюсь выполнить код контроллера. – SilverRuby

+0

Они не нужны, если вы просто хотите, чтобы действие контроллера выполнялось без влияния на браузер. Если вы хотите перенаправить браузер, это сложнее. Запустите приложение со сценарием/сервером и проверьте вывод, когда вы перетаскиваете его. Записывает ли он вызванное действие trash_therm? – BaroqueBobcat