С помощью команды "Управление", как отобразить страницу редактирования с помощью пользовательского действия обновления?
Я пытаюсь, чтобы мое пользовательское действие обновления для моего пользовательского контроллера отображало страницу редактирования, если они не проходят проверку, например так:
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
Я хочу отобразить страницу редактирования с сообщением об ошибке, но то, что у меня есть, не работает. Я не уверен, как направить к правильному действию, так как нет никакого фактического представления или действия редактирования (которые автоматически генерируются гемом Администрации).
1 ответ
Решение
Панди, я не использовал этот драгоценный камень, но смотрю исходный код и этот комментарий к этой проблеме в 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