mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Improve a couple exception messages related to variants and mime types
Avoid one-liner conditionals when they are too big. Avoid concatenating strings to build error messages. Improve messages a bit.
This commit is contained in:
parent
bc26f442d2
commit
3b40a5d83d
3 changed files with 18 additions and 14 deletions
|
@ -23,15 +23,17 @@ module AbstractController
|
|||
protected
|
||||
|
||||
def method_missing(symbol, &block)
|
||||
mime_const = symbol.upcase
|
||||
const_name = symbol.upcase
|
||||
|
||||
raise NoMethodError, "To respond to a custom format, register it as a MIME type first:" +
|
||||
"http://guides.rubyonrails.org/action_controller_overview.html#restful-downloads." +
|
||||
"If you meant to respond to a variant like :tablet or :phone, not a custom format," +
|
||||
"be sure to nest your variant response within a format response: format.html" +
|
||||
"{ |html| html.tablet { ..." unless Mime.const_defined?(mime_const)
|
||||
unless Mime.const_defined?(const_name)
|
||||
raise NoMethodError, "To respond to a custom format, register it as a MIME type first: " \
|
||||
"http://guides.rubyonrails.org/action_controller_overview.html#restful-downloads. " \
|
||||
"If you meant to respond to a variant like :tablet or :phone, not a custom format, " \
|
||||
"be sure to nest your variant response within a format response: " \
|
||||
"format.html { |html| html.tablet { ... } }"
|
||||
end
|
||||
|
||||
mime_constant = Mime.const_get(mime_const)
|
||||
mime_constant = Mime.const_get(const_name)
|
||||
|
||||
if Mime::SET.include?(mime_constant)
|
||||
AbstractController::Collector.generate_method_for_mime(mime_constant)
|
||||
|
|
|
@ -348,8 +348,10 @@ module ActionController #:nodoc:
|
|||
# 2. <tt>:action</tt> - overwrites the default render action used after an
|
||||
# unsuccessful html +post+ request.
|
||||
def respond_with(*resources, &block)
|
||||
raise "In order to use respond_with, first you need to declare the formats your " \
|
||||
"controller responds to in the class level" if self.class.mimes_for_respond_to.empty?
|
||||
if self.class.mimes_for_respond_to.empty?
|
||||
raise "In order to use respond_with, first you need to declare the " \
|
||||
"formats your controller responds to in the class level."
|
||||
end
|
||||
|
||||
if collector = retrieve_collector_from_mimes(&block)
|
||||
options = resources.size == 1 ? {} : resources.extract_options!
|
||||
|
|
|
@ -66,15 +66,15 @@ module ActionDispatch
|
|||
end
|
||||
end
|
||||
|
||||
# Sets the \variant for template
|
||||
# Sets the \variant for template.
|
||||
def variant=(variant)
|
||||
if variant.is_a? Symbol
|
||||
@variant = variant
|
||||
else
|
||||
raise ArgumentError, "request.variant must be set to a Symbol, not a #{variant.class}. For security reasons," +
|
||||
"never directly set the variant to a user-provided value, like params[:variant].to_sym." +
|
||||
"Check user-provided value against a whitelist first, then set the variant:"+
|
||||
"request.variant = :tablet if params[:some_param] == 'tablet'"
|
||||
raise ArgumentError, "request.variant must be set to a Symbol, not a #{variant.class}. " \
|
||||
"For security reasons, never directly set the variant to a user-provided value, " \
|
||||
"like params[:variant].to_sym. Check user-provided value against a whitelist first, " \
|
||||
"then set the variant: request.variant = :tablet if params[:variant] == 'tablet'"
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue