2009-10-09 114 views
0

我正在嘗試使用集成的scriptaculous拖放效果創建Ruby on Rails應用程序。Ruby on Rails拖放不起作用

由於我是Ruby的新手,在查看許多文檔時,我最終看到了這段代碼,但無法理解爲什麼控制器代碼沒有執行。

在html.erb頁面起源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> 

目標

<%= 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 2009-10-09 20:59:34

+0

我怎樣才能看到它? Thansks – SilverRuby 2009-10-10 03:45:35

回答

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- drop-rails,因爲我試圖讓控制器的代碼執行。 – SilverRuby 2009-10-10 06:30:15

+0

如果您只是希望控制器操作在不影響瀏覽器的情況下運行,則這些操作不是必需的。如果你想重定向瀏覽器,那就更加複雜了。在腳本/服務器上運行應用程序,並在拖放時檢查輸出。它是否記錄正在調用的trash_therm操作? – BaroqueBobcat 2009-10-10 20:34:16