2010-04-02 73 views
1

我正在使用rails beta 3,並且我有一個名爲index.html.erb的erb頁面用於討論控制器。在該頁面中,我有一個鏈接如下:REST銷燬鏈接生成問題

<%= link_to 'Delete', {:action=>'destroy', :id=>@discussion}, :confirm=>"Are you sure", :method=>'post' %> 

這應該產生一個鏈接刪除討論,但是,生成HTML是

<a href="/discussions/1" data-confirm="Are you sure" data-method="post" rel="nofollow">Delete</a> 

總是路由到show動作。我認爲href應該是/ discuss/destroy/1。但由於某種原因,事實並非如此。

任何想法?提前致謝。

回答

1

這是正確的HREF,但該方法應該是:delete。您還需要確保你正確設置了處事軌3.您可能需要添加csrf_meta_tag幫手的新侵入式JavaScript的方式,因爲在這個環節中描述:

http://blog.loopedstrange.com/modest-rubyist-archive/rails-3-ujs-and-csrf-meta-tags

+0

這有效!非常感謝,麥克! – Wei 2010-04-02 19:29:26

+0

更新後的鏈接:http://blog.loopedstrange.com/modest-rubyist-archive/rails-3-ujs-and-csrf-meta-tags – Eric 2012-12-03 18:42:14

0

在查看routing guide時,刪除鏈接的格式應該與您的示例中的格式相同。除了該方法應該是DELETE而不是POST。但是這可能是一個兼容的問題/解決方案,因爲與GET和POST相比,DELETE方法的'less'支持。

顯示動作在您的鏈接上使用GET方法激活,這顯然不應該在查看您的鏈接。

那麼你確定你的路線安裝正確嗎?喜歡的東西:

map.resources :discussions 

編輯: 我剛纔看到你的link_to代碼中有一個錯誤,:method應設置爲:delete

<%= link_to 'Delete', {:action=>'destroy', :id=>@discussion}, :confirm=>"Are you sure", :method=>:delete %> 

此外,你還可以使用類似discussion_path(@discussion_item)爲要生成的路徑(URL)。這比手動創建路徑更清晰。爲了這個工作,您需要儘快進行路線設置,並且需要包含當前(顯示)頁面信息的變量@discussion_item

所以你link_to線變成這樣:

<%= link_to 'Delete', discussion_path(@discussion_item), :confirm=>"Are you sure", :method=>:delete %> 
+0

我試圖通過使用命名的路由添加一個「刪除」鏈接,如你所描述的。不過,我的鏈接轉到了「show」頁面。儘管如此,使用散列工作的「舊」方式仍然有效。 – JJD 2011-03-25 16:37:00

0

你可能使用軌道3.1

嘗試更換

<%= javascript_include_tag :defaults %> 

<%= javascript_include_tag "application" %>