aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Koziarski <michael@koziarski.com>2007-08-17 01:08:16 +0000
committerMichael Koziarski <michael@koziarski.com>2007-08-17 01:08:16 +0000
commit3280a6e51b6359095000d810c9fe2d3d8c6ac352 (patch)
tree81729cd553fa3e1bcbebc1d5175fc3a28076f536
parent29b0707f07f148d98515125dab44b73cfdc0a3d4 (diff)
downloadrails-3280a6e51b6359095000d810c9fe2d3d8c6ac352.tar.gz
rails-3280a6e51b6359095000d810c9fe2d3d8c6ac352.tar.bz2
rails-3280a6e51b6359095000d810c9fe2d3d8c6ac352.zip
Improve url_for documentation for ActionController::Base and UrlRewriter. Closes #9022. Closes #9077. [juanjo.bazan]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7331 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rwxr-xr-xactionpack/lib/action_controller/base.rb22
-rw-r--r--actionpack/lib/action_controller/url_rewriter.rb25
2 files changed, 32 insertions, 15 deletions
diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb
index da948940af..353f3f7330 100755
--- a/actionpack/lib/action_controller/base.rb
+++ b/actionpack/lib/action_controller/base.rb
@@ -514,21 +514,25 @@ module ActionController #:nodoc:
# * <tt>:only_path</tt> -- if true, returns the relative URL (omitting the protocol, host name, and port) (<tt>false</tt> by default)
# * <tt>:trailing_slash</tt> -- if true, adds a trailing slash, as in "/archive/2005/". Note that this
# is currently not recommended since it breaks caching.
- # * <tt>:host</tt> -- overrides the default (current) host if provided
- # * <tt>:protocol</tt> -- overrides the default (current) protocol if provided
- # * <tt>:user</tt> -- Inline HTTP authentication (only plucked out if :password is also present)
- # * <tt>:password</tt> -- Inline HTTP authentication (only plucked out if :user is also present)
+ # * <tt>:host</tt> -- overrides the default (current) host if provided.
+ # * <tt>:protocol</tt> -- overrides the default (current) protocol if provided.
+ # * <tt>:port</tt> -- optionally specify the port to connect to.
+ # * <tt>:user</tt> -- Inline HTTP authentication (only plucked out if :password is also present).
+ # * <tt>:password</tt> -- Inline HTTP authentication (only plucked out if :user is also present).
+ # * <tt>:skip_relative_url_root</tt> -- if true, the url is not constructed using the relative_url_root of the request so the path
+ # will include the web server relative installation directory.
#
# The URL is generated from the remaining keys in the hash. A URL contains two key parts: the <base> and a query string.
# Routes composes a query string as the key/value pairs not included in the <base>.
#
# The default Routes setup supports a typical Rails path of "controller/action/id" where action and id are optional, with
# action defaulting to 'index' when not given. Here are some typical url_for statements and their corresponding URLs:
- #  
- # url_for :controller => 'posts', :action => 'recent' # => 'proto://host.com/posts/recent'
- # url_for :controller => 'posts', :action => 'index' # => 'proto://host.com/posts'
- # url_for :controller => 'posts', :action => 'show', :id => 10 # => 'proto://host.com/posts/show/10'
- # url_for :controller => 'posts', :user => 'd', :password => '123' # => 'proto://d:123@host.com/posts'
+ #
+ # url_for :controller => 'posts', :action => 'recent' # => 'proto://host.com/posts/recent'
+ # url_for :controller => 'posts', :action => 'index' # => 'proto://host.com/posts'
+ # url_for :controller => 'posts', :action => 'index', :port=>'8033' # => 'proto://host.com:8033/posts'
+ # url_for :controller => 'posts', :action => 'show', :id => 10 # => 'proto://host.com/posts/show/10'
+ # url_for :controller => 'posts', :user => 'd', :password => '123' # => 'proto://d:123@host.com/posts'
#
# When generating a new URL, missing values may be filled in from the current request's parameters. For example,
# <tt>url_for :action => 'some_action'</tt> will retain the current controller, as expected. This behavior extends to
diff --git a/actionpack/lib/action_controller/url_rewriter.rb b/actionpack/lib/action_controller/url_rewriter.rb
index 3b2af2e1c2..0ed6e4de7d 100644
--- a/actionpack/lib/action_controller/url_rewriter.rb
+++ b/actionpack/lib/action_controller/url_rewriter.rb
@@ -26,13 +26,26 @@ module ActionController
base.default_url_options ||= default_url_options
end
- # Generate a url with the provided options. The following special options may
- # effect the constructed url:
+ # Generate a url based on the options provided, default_url_options and the
+ # routes defined in routes.rb
+ #
+ # Options used by <tt>url_for</tt>:
+ #
+ # * <tt>:only_path</tt> If true, the relative url is returned. Defaults to false.
+ # * <tt>:protocol</tt> The protocol to connect to. Defaults to 'http'.
+ # * <tt>:host</tt> Specifies the host the link should be targetted at. If <tt>:only_path</tt> is false, this option must be
+ # provided either explicitly, or via default_url_options.
+ # * <tt>:port</tt> Optionally specify the port to connect to.
+ # * <tt>:anchor</tt> An anchor name to be appended to the path.
+ #
+ # Any other key(:controller, :action, etc...) given to <tt>url_for</tt> is forwarded to the Routes module.
+ #
+ # Examples:
+ #
+ # url_for :controller => 'tasks', :action => 'testing', :host=>'somehost.org', :port=>'8080' # => 'http://somehost.org:8080/tasks/testing'
+ # url_for :controller => 'tasks', :action => 'testing', :host=>'somehost.org', :anchor => 'ok', :only_path => true # => '/tasks/testing#ok'
+ # url_for :controller => 'tasks', :action => 'testing', :host=>'somehost.org', :number => '33' # => 'http://somehost.org/tasks/testing?number=33'
#
- # * :host Specifies the host the link should be targetted at. This option
- # must be provided either explicitly, or via default_url_options.
- # * :protocol The protocol to connect to. Defaults to 'http'
- # * :port Optionally specify the port to connect to.
def url_for(options)
options = self.class.default_url_options.merge(options)