我想在查看Ruby on Rails項目中查看對象的頁面上具有「刪除」鏈接。我遇到的問題「link_to:method =>:delete」在查看對象的頁面上
<%= link_to "Delete", @member, :confirm => 'Are you sure?', :method => :delete %>
加載頁面它是,當方法運行,從而嘗試加載一個不存在的對象。我想返回到索引頁面,一旦對象被刪除。
任何想法?
我想在查看Ruby on Rails項目中查看對象的頁面上具有「刪除」鏈接。我遇到的問題「link_to:method =>:delete」在查看對象的頁面上
<%= link_to "Delete", @member, :confirm => 'Are you sure?', :method => :delete %>
加載頁面它是,當方法運行,從而嘗試加載一個不存在的對象。我想返回到索引頁面,一旦對象被刪除。
任何想法?
問題在於你的控制器。
確保銷燬操作重定向到索引,你應該沒問題。
如果您使用腳手架來生成控制器,應該已經爲您完成了。 例子:
class MembersController < ApplicationController
...
def destroy
@member = Member.find(params[:id])
@member.destroy
respond_to do |format|
format.html{ redirect_to members_url}
format.xml { head :ok}
end
end
end
在我的項目,我傾向於創造我的控制器,找到對象before_filter
,如果它不存在,它會自動將錯誤消息重定向到一個默認的索引網址,像這樣:
def find_object
@object = Object.find(params[:id])
rescue ActiveRecord::RecordNotFound => e
flash[:error] = "Sorry, that object was not found. Please try again."
redirect_to objects_path
end
你仍然需要有一個重定向的對象是在控制器後銷燬,但至少這從用戶節省了意外試圖刪除不存在/視圖對象,拋出異常。
這是一個很好的做法,只要確保在啓動過濾器時只使用sensible/except選項。 – EmFi 2010-02-04 20:49:03
一般而言,您不應該使用鏈接來修改記錄,因爲如果網絡蜘蛛或意外的事情進入您的網站可能會發生壞事。 – 2010-02-04 18:23:55
我認爲這是可以的,因爲腳手架上有<%= link_to'Destroy',member,:confirm =>'你確定嗎?',:method =>:delete%>「。你有什麼建議? – 2010-02-04 18:32:56
回覆:Mike Buckbee:或者至少確保刪除鏈接僅供授權用戶使用。 – EmFi 2010-02-04 18:33:08