diff --git a/app/controllers/concerns/admins/render_helper.rb b/app/controllers/concerns/admins/render_helper.rb index 3ff17412e..80f008b08 100644 --- a/app/controllers/concerns/admins/render_helper.rb +++ b/app/controllers/concerns/admins/render_helper.rb @@ -1,36 +1,34 @@ module Admins::RenderHelper extend ActiveSupport::Concern + def render_by_format(hash) + format = request.format.symbol + hash.key?(format) ? hash[format].call : hash[:html].call + end + def render_forbidden - respond_to do |format| - format.html { redirect_to '/403' } - format.json { super } - end + render_by_format(html: -> { redirect_to '/403' }, + json: -> { render status: 403, json: { messages: I18n.t('error.forbidden') } } ) end def render_not_found - respond_to do |format| - format.html { render 'admins/shared/404' } - format.js { render_js_error('资源未找到') } - format.json { render status: 404, json: { message: '资源未找到' } } - end + render_by_format(html: -> { render 'admins/shared/404' }, + js: -> { render_js_error('资源未找到') }, + json: -> { render status: 404, json: { message: '资源未找到' } }) end def render_unprocessable_entity(message) - respond_to do |format| - format.html { render 'admins/shared/422' } - format.js { render_js_error(message) } - format.json { render status: 422, json: { message: message } } - end + render_by_format(html: -> { render 'admins/shared/422' }, + js: -> { render_js_error(message) }, + json: -> { render status: 422, json: { message: message } }) end alias_method :render_error, :render_unprocessable_entity def internal_server_error(message = '系统错误') - respond_to do |format| - format.html { render partail: 'admins/shared/500', locals: { message: message } } - format.js { render_js_error(message) } - format.json { render status: 500, json: { message: message } } - end + @message = message + render_by_format(html: -> { render 'admins/shared/500' }, + js: -> { render_js_error(message) }, + json: -> { render status: 500, json: { message: message } }) end def render_js_template(template, **opts) diff --git a/app/views/admins/shared/500.html.erb b/app/views/admins/shared/500.html.erb index bdcf58a75..b1488d6ff 100644 --- a/app/views/admins/shared/500.html.erb +++ b/app/views/admins/shared/500.html.erb @@ -2,5 +2,5 @@
500
-
<%= message %>
+
<%= @message %>
\ No newline at end of file