使用管理 gem,如何通过自定义更新操作呈现编辑页面?
Using Administrate gem, how to render edit page via custom update action?
我正在尝试让我的用户控制器的自定义更新操作在验证失败时呈现编辑页面,如下所示:
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 自动生成)。
Pandy,我没用过这个 gem 但是看着 GitHub 中的 source code and this comment of this issue,你试过下面的吗?
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
我正在尝试让我的用户控制器的自定义更新操作在验证失败时呈现编辑页面,如下所示:
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 自动生成)。
Pandy,我没用过这个 gem 但是看着 GitHub 中的 source code and this comment of this issue,你试过下面的吗?
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