当我在用户控制器中点击此destroy方法时,我一直收到以下错误。
AbstractController :: DoubleRenderError(在此操作中多次调用渲染和/或重定向。 请注意,您可能只是 调用渲染或重定向,每次操作最多一次。另请注意 既不重定向也不渲染终止执行动作,所以如果 你想在重定向后退出一个动作,你需要做点什么 比如“redirect_to(...)并返回”。):
这是一个奇怪的,因为老实说,我只是回应了一次电话。
这是我的行动:
def destroy
user = User.find(params[:id])
if user.has_role_for? current_client
# then we remove the role
user.has_no_roles_for! current_client
# was that the users only role?
if user.roles.count == 0
user.destroy
end
respond_with head :ok
else
respond_with({:error=>'unauthorised'}, :status => :forbidden)
end
end
有什么想法吗?
答案 0 :(得分:5)
尝试在respond_with行后添加“并返回”:
respond_with head :ok and return
respond_with({:error=>'unauthorised'}, :status => :forbidden) and return
答案 1 :(得分:5)
head(:ok)
不会返回respond_with
的内容。 head :ok
渲染200没有身体。 respond_with
通过响应者呈现您传递给它的对象的一些表示。 head
调用render
,respond_with
调用render
,因此出现双重渲染错误。
您应该将该行更改为head :ok
。