2012-08-15 84 views
0

對於我Website模型,我現在讓用戶的方法消滅該模型的實例是把這個HTML頁上:使用Rails Destroy方法而不發送http DELETE請求?

<%= link_to "delete", website, :method => :delete %> 

然而,這將有發送DELETE請求/websites/:id(.:format)才能使用銷燬方法。我不能這樣做,因爲我的Websitesid是字符串,例如http://example.com,意思是localhost:3000/websites/http://example.com就沒有意義。

所以我想知道的是,除了發送http DELETE請求之外,是否還有另一種方法可以刪除我的Websites模型的實例?我希望我可以直接訪問destroy方法。

任何幫助,非常感謝。

回答

0

爲什麼你沒有網站的主鍵ID作爲整數,然後有一個「url」字符串屬性,可以是http://example.com名稱。

這將使許多事情變得更容易,特別是關聯。此外,您仍然可以根據網址搜索相關內容,而且您並沒有真正限制將url設置爲列和ID#作爲主鍵。

+0

的原因是因爲我有一個模型'Simulations'需要被用'Websites'相關聯,但它們通過node.js 被添加到我的數據庫中,'Websites'和'Simulations'唯一的共同點就是'url'屬性。有一個結果,我不得不手動映射外鍵。 – knygw 2012-08-15 22:19:55

+0

這不應該阻止你使用id作爲主鍵而不是url。如果這是一種一次性使用的應用程序,那麼它們並沒有什麼關係,但如果這很重要,將URL作爲主鍵將在未來應對。 – Solomon 2012-08-16 19:50:58

0

我不是很確定明白你的問題,但你看看friendly_id

感謝這個寶石,你將能夠創建與字符串,而不是基本的SQL主要ids的網址。

0

您可以通過向routes.rb添加新路線來訪問公共方法。

例如:

的routes.rb

post '/websites/:id' => 'websites#destroy', :as => :destroy_website 

視圖

<%= link_to "destroy", destroy_website_path(:id => "http://example.com"), :method => :post %> 
+0

這看起來不錯;讓我試試這個真快 – knygw 2012-08-15 21:53:44

+0

你能解釋一些事情嗎?什麼是「as」?我在我的routes.rb文件中得到這個錯誤:'undefined local variable or method'destroy_website'' – knygw 2012-08-15 22:02:41

+0

它創建方法:destroy_website_path和destroy_website_url。沒有這樣的方法destroy_website。 – emrahbasman 2012-08-15 22:56:32