mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
4bf516e072
* Move #set_cookie and #delete_cookie inline to optimize. These optimizations should almost certainly be sent back upstream to Rack. The optimization involves using an ivar for cookies instead of indexing into the headers each time. * Was able to use a bare Hash for headers now that cookies have their own joining semantics (some code assumed that the raw cookies were an Array). * Cache blankness of body on body= * Improve expand_cache_key for Arrays of a single element (common in our case) * Use a simple layout condition check unless conditions are used * Cache visible actions * Lazily load the UrlRewriter * Make etag an ivar that is set on prepare!
41 lines
1.2 KiB
Ruby
41 lines
1.2 KiB
Ruby
module ActionController
|
|
module UrlFor
|
|
extend ActiveSupport::Concern
|
|
|
|
include RackConvenience
|
|
|
|
# Overwrite to implement a number of default options that all url_for-based methods will use. The default options should come in
|
|
# the form of a hash, just like the one you would use for url_for directly. Example:
|
|
#
|
|
# def default_url_options(options)
|
|
# { :project => @project.active? ? @project.url_name : "unknown" }
|
|
# end
|
|
#
|
|
# As you can infer from the example, this is mostly useful for situations where you want to centralize dynamic decisions about the
|
|
# urls as they stem from the business domain. Please note that any individual url_for call can always override the defaults set
|
|
# by this method.
|
|
def default_url_options(options = nil)
|
|
end
|
|
|
|
def rewrite_options(options) #:nodoc:
|
|
if defaults = default_url_options(options)
|
|
defaults.merge(options)
|
|
else
|
|
options
|
|
end
|
|
end
|
|
|
|
def url_for(options = {})
|
|
options ||= {}
|
|
case options
|
|
when String
|
|
options
|
|
when Hash
|
|
@url ||= UrlRewriter.new(request, params)
|
|
@url.rewrite(rewrite_options(options))
|
|
else
|
|
polymorphic_url(options)
|
|
end
|
|
end
|
|
end
|
|
end
|