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