我的应用中有用户和事件。每个用户都有多个事件。当用户想查看特定的事件时,他将执行以下操作:
def show
begin
@userEvents = current_user.event
@event = @userEvents.find(params[:id])
rescue ActiveRecord::RecordNotFound
redirect_to :controller => "main", :action => "index"
end
respond_to do |format|
format.html # show.html.erb
format.json { render json: @event }
end
end
如果某个用户没有找到该事件,这意味着他在URL上进行了操作,而他尝试获取的事件不属于他。我想要将他重定向到主页或只显示一个错误页面,告诉他未找到该事件。如果我尝试运行上面的代码,将会触发此错误:AbstractController::DoubleRenderError in EventsController#show
有什么最好的方法来解决这个问题?
rescue_from
只是在处理常见错误时更好的方式,允许您在代码中分离出关注点。当然,并不总是更好,因此还有其他两个选项 :-) - noodl