3

当我在我的用户控制器中点击这个销毁方法时,我遇到了以下错误。

AbstractController::DoubleRenderError (在此操作中多次调用渲染和/或重定向。请注意,您只能调用渲染或重定向,每个操作最多调用一次。另请注意,重定向和渲染都不会终止操作的执行,因此如果你想在重定向后退出一个动作,你需要做一些类似“redirect_to(...) and return”的事情。):

这很奇怪,因为老实说,我只回应一次电话。

这是我的行动:

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

有任何想法吗?

4

2 回答 2

5

尝试在 respond_with 行之后添加“并返回”:

respond_with head :ok and return 

respond_with({:error=>'unauthorised'}, :status => :forbidden) and return
于 2011-03-24T09:04:28.217 回答
5

head(:ok)不返回你可以返回的东西respond_withhead :ok呈现没有主体的 200。 respond_with通过响应者呈现您传递给它的对象的一些表示。 head调用renderrespond_with调用render,因此出现双重渲染错误。

您应该将该行更改为 just head :ok

于 2012-04-21T00:08:57.957 回答