2009-11-05 38 views
0

我有一個Rails應用程序,在刪除對話框之前,我正在做一個「你確定」的常規刪除對話框。這一切都很好,但我也點擊一個小ajax刪除包含所有信息的塊。無論什麼讓事情混淆,塊都會被移除。我似乎無法在線找到有關如何在確認符號後有條件執行操作的文檔。有條件:在link_to_remote中確認

我的代碼是這樣的:

<%= link_to_remote "Delete", :url => 
    {:controller => "pixel", :action => :destroy, :id => pixel.id}, 
    :onclick=>"$(this).up(0).remove()" %> 

謝謝!

回答

1

你可以發佈你的代碼嗎?我想像這樣的事情會的工作:

link_to_remote("Delete item", :url => item_path, :method => 'delete', :confirm => 'Are you sure?') 
+0

我的代碼看起來像這樣 <%= link_to_remote 「刪除」,:URL => {:控制器=> 「像素」:動作=>:destroy,:id => pixel.id},:onclick =>「$(this).up(0).remove()」%> – 2009-11-06 01:57:45

0

我沒有時間去追求一個例子現在,但嘗試使用:complete選項link_to_remote動作完成後要刪除的元素,而不是:onclick

http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html#M001645 - 看看「回調」部分。

這是個很簡單的:

<%= link_to_remote "Delete", :url => 
    {:controller => "pixel", :action => :destroy, :id => pixel.id}, :confirm => "You sure?", 
    :complete =>"$(this).up(0).remove()" %> 
+0

這似乎不適用於我。我不認爲它開了一槍。我基本上需要JS來觸發或不基於JS警報的答案。我也在查看文檔並看到了一些稱爲條件的東西,但我不知道它是如何工作的。 另外我知道我可以用控制器和一個方法在那裏做一些東西,但這很簡單。只需調用一個JS,具體取決於警報框所說的內容。 – 2009-11-06 22:57:34

0

我可以做一個小小的建議,利用其基於默認路由(控制器,方法,id)的路線應該理想地不被使用,而是使用命名路由或者當你聲明你的路線時免費提供適當的寧靜路線(例如map.resources:像素)

我強烈推薦閱讀the rails routing guide,它是對可以做什麼和如何做的一個很好的摘要。

至於你的問題,你試圖達到什麼都是基於obtrusive的JavaScript。這並不是說link_to_remote方法不是很好,但如果你正在顯示一個列表,它肯定會輸出混亂的代碼。在我看來,我會更清潔一個更好,首先實現一個沒有javascript的工作示例,然後不加介入地添加javascript。這會增加開銷嗎?是的,但是你的代碼會變得更乾淨,並且允許你輕鬆地添加額外的邏輯(如刪除已刪除的行),而不必在每一行上覆制功能。

對不起,但我沒有足夠的時間提供示例,但簡單的谷歌搜索不引人注意的JavaScript軌道產生許多許多結果,但here is one讓你開始。

希望這有助於,即使它有點題外話:)