是否可以在rails上使用get_by_id_or_404函數。對於爲例,在我的控制器使用:在Rails上獲取模型或404
@destination = Destination.find_by_id(params[:id])
如果ID未設置或目標沒有找到,我怎麼能問的Rails重定向到一個404頁?
謝謝!
是否可以在rails上使用get_by_id_or_404函數。對於爲例,在我的控制器使用:在Rails上獲取模型或404
@destination = Destination.find_by_id(params[:id])
如果ID未設置或目標沒有找到,我怎麼能問的Rails重定向到一個404頁?
謝謝!
在生產模式,那麼Rails會自動通過渲染的404錯誤頁面搶救ActiveRecord::RecordNotFound
例外。
只需使用找不到結果時發現ActiveRecord::RecordNotFound
的查找器的爆炸版本。
@destination = Destination.find_by_id!(params[:id])
但是,在你的情況下,沒有理由使用find_by
方法。簡單地回退到find
。
@destination = Destination.find(params[:id])
我想在生產中,它會引發錯誤,並顯示404 OU 500
這是the guide:對的結束
您可以指定一個感嘆號(!)動態查找,讓他們提高一個ActiveRecord :: RecordNotFound錯誤,如果他們不返回任何記錄,就像Client.find_by_name!(「瑞安」)
發生這種情況時,Rails會呈現404頁爲您服務。此外,只需使用find
作爲快捷方式find_by_id
:
@destination = Destination.find!(params[:id])
不需要感嘆號!查看[find]的文檔(http://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-find),如果您將它傳遞給ID,它將引發RecordNotFound。 – molf
我想你的意思是找到find_by_id的快捷方式! –
除非您更改查找程序方法,否則該方法不會生成任何異常。 –