Ruby on rails 使用管理gem,如何通过自定义更新操作呈现编辑页面?

Ruby on rails 使用管理gem,如何通过自定义更新操作呈现编辑页面?,ruby-on-rails,routing,thoughtbot,administrate,Ruby On Rails,Routing,Thoughtbot,Administrate,如果用户控制器的自定义更新操作无法验证,我将尝试让它们呈现编辑页面,如下所示: 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 us

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

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

我想在编辑页面上显示一条列有错误的flash消息,但我所做的不起作用。我不确定如何路由到正确的操作,因为没有实际的查看或编辑操作(由Administrate gem自动生成)。

Pandy,我没有使用此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

感谢Matayoshi的回复。我确实尝试过类似的方法,但当这种情况发生时,我得到了
未定义的方法或变量:resource
。我认为这是正确的,但我不确定如何操作它以便使用它。尝试
user
而不是
resource
工作!!!非常感谢!你是怎么得到这个答案的?我在他们的文档中看到了这个动作:但我不知道用
user
替换
requested\u resource
。如果这是一个加载或愚蠢的问题,我很抱歉。我只是想知道你的思考过程。再次感谢你的帮助@潘迪照:好的,这是一个好问题!您很接近,唯一的问题是您没有定义
资源
变量,而是定义为
用户
。在本例中,资源是用户,因为它是UsersController