为什么当我传入一个不存在的对象时,这不会按预期返回404?我可以看到它进入scope_mosaic
,遇到一个nil,但不是在那时返回404,而是继续执行social_share_image
方法,返回406,然后我得到ActionController::UnknownFormat
错误。
before_action :scope_mosaic
def social_share_image
candidate_url = @mosaic.social_share_image
if candidate_url.nil?
redirect_to og_image_url
else
redirect_to candidate_url
end
end
private
def scope_mosaic
@mosaic = Mosaic.find_by(id: params[:id])
if @mosaic.nil?
render_error(:not_found, :not_found)
end
end
编辑:render_error
这是render_error
方法,在application_controller
:
def render_error(status, error_code, body = nil)
data = { error_code: error_code }.merge(body || {})
respond_to do |format|
format.json { render json: data.to_json, status: status }
end
end