2010-03-07 96 views
1

我是新來的鐵軌。我的rails版本是2.3.5。我發現如下用法:毀滅?刪除?這裏發生了什麼? Rails 2.3.5

在控制器中,定義了一個銷燬方法,並在視圖中,您可以使用:action =>「delete」來啓動該方法。動作名稱是否與方法名稱相同?爲什麼刪除被映射爲銷燬?

同樣,在我的控制器中,我定義了一個名爲destroy的方法來刪除記錄。在一個視圖中,我有<%= link_to "remove", :action => 'destroy', :id => myrecord %>。但它在實踐中從不起作用。每次按下刪除鏈接時,它都會將我重定向到顯示視圖,顯示記錄的內容。我敢肯定,我的破壞方法:

def destroy 
    @myobject = MyObject.find(params[:id]) 
    @myobject.destroy 
    @redirect_to :action = 'index' 
end 

如果我從毀滅改變方法名像remove_me和更改操作名稱在視圖中remove_me,按預期工作的一切。

在上述兩個奇怪的問題中,我確信在我的配置中沒有棘手的路由設置。

總而言之,破壞和刪除似乎都是神祕的關鍵詞。任何人都可以向我解釋這個嗎?

+0

如果你將鼠標懸停在link_to提供的鏈接上,它在哪裏?如果您在HTML上查看源代碼,那麼這些鏈接之間的鏈接又有何不同? – 2010-03-07 10:55:05

回答

1

您可能將MyObject設置爲routes.rb中的資源。資源會獲得一些與操作名稱不匹配的路由。當您使用與資源定義的路由不匹配的操作名稱時,您將獲得直接映射到操作名稱的默認路由。

我發現this link很好地解釋了rails的路由。看看「RESTful路由」部分。

1

如果您使用REST路由,destory只支持刪除方法。你可以改變這樣的

link_to "remove", :action => 'destroy', :id => myrecord", :method => :delete 

添加代碼:方法=>:刪除 軌將增加名爲「_method」的隱藏輸入值「刪除」

1

全部替換:後=>真有:method =>:post

相關問題