1

如果他们无法验证,我正在尝试让我的用户控制器的自定义更新操作呈现编辑页面,如下所示:

def update
  user = User.find(params[:id])
  user.update(user_params)
  # zero because checkbox
  user_params[:banned] == "0" ? user.remove_role(:banned) : user.add_role(:banned)
  if user.banned_note
    if user.banned_note.update(content: params[:user][:reason_for_ban])
      redirect_to "/admin/users/#{params[:id]}"
    else
      render "edit.html.erb"                                    # this line
    end
  end
end

def find_resource(param)
  User.find!(id: param)
end

我想用列出错误的闪存消息来呈现编辑页面,但是我所拥有的不起作用。我不确定如何路由到正确的操作,因为没有实际的查看或编辑操作(由管理 gem 自动生成)。

4

1 回答 1

3

潘迪,我没有使用过这个 gem,但是在 GitHub 中查看了这个问题的源代码和这个评论,你有没有尝试以下?

def update
  user = User.find(params[:id])
  user.update(user_params)
  # zero because checkbox
  user_params[:banned] == "0" ? user.remove_role(:banned) : user.add_role(:banned)
  if user.banned_note
    if user.banned_note.update(content: params[:user][:reason_for_ban])
      redirect_to "/admin/users/#{params[:id]}"
    else
      #This two lines
      flash.now[:notice] = "Something"
      render :new, locals: {
        page: Administrate::Page::Form.new(dashboard, resource),
      }
    end
  end
end

def find_resource(param)
  User.find!(id: param)
end
于 2017-08-04T20:37:41.297 回答