post queries: show full error message on error page.

This commit is contained in:
evazion
2022-04-09 03:17:06 -05:00
parent eca0ab04f7
commit 652db0cd9f
3 changed files with 8 additions and 5 deletions

View File

@@ -132,6 +132,8 @@ class ApplicationController < ActionController::Base
render_error_page(410, exception, template: "static/pagination_error", message: "You cannot go beyond page #{CurrentUser.user.page_limit}.")
when PostQuery::TagLimitError
render_error_page(422, exception, template: "static/tag_limit_error", message: "You cannot search for more than #{CurrentUser.tag_query_limit} tags at a time.")
when PostQuery::Error
render_error_page(422, exception, message: exception.message)
when RateLimiter::RateLimitError
render_error_page(429, exception, message: "Rate limit exceeded. You're doing that too fast")
when Rack::Timeout::RequestTimeoutException

View File

@@ -275,13 +275,14 @@ class PostQuery
def validate_metatags!
return if metatags.empty?
raise Error, "Can't have multiple order metatags" if select_metatags(*ORDER_METATAGS).size > 1
order_metatags = select_metatags(*ORDER_METATAGS)
raise Error, "#{order_metatags.to_sentence} can't be used together." if order_metatags.size > 1
SINGLETON_METATAGS.each do |name|
metatag = select_metatags(name).first
raise Error, "'#{name}:' can't be used more than once" if select_metatags(name).size > 1
raise Error, "#{metatag} can't be negated" if metatag&.parents&.any?(&:not?)
raise Error, "#{metatag} can't be used in an 'or' clause" if metatag&.parents&.any?(&:or?)
raise Error, "'#{name}:' can't be used more than once." if select_metatags(name).size > 1
raise Error, "'#{metatag}' can't be negated." if metatag&.parents&.any?(&:not?)
raise Error, "'#{metatag}' can't be used with the 'or' operator." if metatag&.parents&.any?(&:or?)
end
end

View File

@@ -3,7 +3,7 @@
<h1>Error</h1>
<% if @message.present? %>
<p><%= @message %></p>
<p>Error: <%= @message %></p>
<% else %>
<p>Unexpected error: <%= @exception.class %>.</p>