0
當我在我的跟隨控制器上運行ajax POST delete時,對於已經被刪除的記錄,rails會在「nil:NilClass」引發錯誤「未定義方法destroy」。但爲什麼它仍然會說,當我嘗試在destory調用之前的find_follow方法中呈現響應時?執行不應該停止在find_follow裏面嗎?爲什麼在我私有方法返回false後,我的rails控制器不會停止執行?
class FollowsController < ApplicationController
def find_follow
begin
@follow = current_artist.follows.find(params[:id])
raise "Record Not Found" if @follow.nil?
rescue => e
respond_to do |format|
format.html { redirect_to(artist_follows_path(current_artist),:notice => "#{e}") }
format.js { render :text => "#{e}", :status => :not_found}
format.json {render :json => "#{e}", :status => 400}
end
return false
end
end
def destroy
find_follow
if (@follow.destroy)
# respond_to html, js, json...
end
end
end
確實這意味着無法停止從私有方法執行控制器?還是隻爲摧毀方法?我試圖通過讓find_follow方法在無法找到記錄時停止執行來幹起我的控制器。 – Homan
檢查我編輯的答案,我使用'find_by_id',因爲它沒有拋出記錄未找到 – Salil
使用之前的過濾器工作正如你所建議的。但是,我不確定這是爲什麼這是有效的?我認爲從destroy方法調用單獨的方法與使用before_filter相同,但顯然不是。 – Homan