Module: Resourceful::Default::URLs

Included in:
Base
Defined in:
lib/resourceful/default/urls.rb

Overview

This file contains various methods to make URL helpers less painful. They provide methods analogous to the standard foo_url and foo_path helpers. However, they use make_resourceful’s knowledge of the structure of the controller to allow you to avoid figuring out which method to call and which parent objects it should be passed.

Instance Method Summary collapse

Instance Method Details

#collection_url_prefixObject

This prefix is added to the Rails URL helper names for the make_resourceful collection URL helpers, objects_path and new_object_path. By default, it’s the parent name followed by an underscore if a parent is given, and the empty string otherwise.

See also url_helper_prefix.



99
100
101
# File 'lib/resourceful/default/urls.rb', line 99

def collection_url_prefix
  parent? ? "#{parent_class_name.underscore}_" : ''
end

#edit_object_path(object = current_object) ⇒ Object

This returns the path for the edit action for the given object, by default current_object. For example, in HatsController the following are equivalent:

edit_object_path                    #=> "/hats/12/edit"
edit_person_hat_path(@person, @hat) #=> "/hats/12/edit"


39
# File 'lib/resourceful/default/urls.rb', line 39

def edit_object_path(object = current_object); edit_object_route(object, 'path'); end

#edit_object_url(object = current_object) ⇒ Object

Same as edit_object_path, but with the protocol and hostname.



41
# File 'lib/resourceful/default/urls.rb', line 41

def edit_object_url (object = current_object); edit_object_route(object, 'url');  end

#nested_object_path(object = current_object) ⇒ Object

This is the same as object_path, unless a parent exists. Then it returns the nested path for the object. For example, in HatsController where Person has_many :hats and params[:person_id] == 42, the following are equivalent:

nested_object_path             #=> "/person/42/hats/12"
person_hat_path(@person, @hat) #=> "/person/42/hats/12"


28
# File 'lib/resourceful/default/urls.rb', line 28

def nested_object_path(object = current_object); nested_object_route(object, 'path'); end

#nested_object_url(object = current_object) ⇒ Object

Same as nested_object_path, but with the protocol and hostname.



30
# File 'lib/resourceful/default/urls.rb', line 30

def nested_object_url (object = current_object); nested_object_route(object, 'url');  end

#new_object_pathObject

This returns the path for the new action for the current controller. For example, in HatsController where Person has_many :hats and params[:person_id] == 42, the following are equivalent:

new_object_path              #=> "/people/42/hats/new"
new_person_hat_path(@person) #=> "/people/42/hats/new"


61
# File 'lib/resourceful/default/urls.rb', line 61

def new_object_path; new_object_route('path'); end

#new_object_urlObject

Same as new_object_path, but with the protocol and hostname.



63
# File 'lib/resourceful/default/urls.rb', line 63

def new_object_url ; new_object_route('url');  end

#object_path(object = current_object) ⇒ Object

This returns the path for the given object, by default current_object. For example, in HatsController the following are equivalent:

object_path    #=> "/hats/12"
hat_path(@hat) #=> "/hats/12"


15
# File 'lib/resourceful/default/urls.rb', line 15

def object_path(object = current_object); object_route(object, 'path'); end

#object_url(object = current_object) ⇒ Object

Same as object_path, but with the protocol and hostname.



17
# File 'lib/resourceful/default/urls.rb', line 17

def object_url (object = current_object); object_route(object, 'url');  end

#objects_pathObject

This returns the path for the collection of the current controller. For example, in HatsController where Person has_many :hats and params[:person_id] == 42, the following are equivalent:

objects_path              #=> "/people/42/hats"
person_hats_path(@person) #=> "/people/42/hats"


50
# File 'lib/resourceful/default/urls.rb', line 50

def objects_path; objects_route('path'); end

#objects_urlObject

Same as objects_path, but with the protocol and hostname.



52
# File 'lib/resourceful/default/urls.rb', line 52

def objects_url ; objects_route('url');  end

#parent_path(object = parent_object) ⇒ Object

This returns the path for the parent object.



67
68
69
# File 'lib/resourceful/default/urls.rb', line 67

def parent_path(object = parent_object)
  instance_route(parent_class_name.underscore, object, 'path')
end

#parent_url(object = parent_object) ⇒ Object

Same as parent_path, but with the protocol and hostname.



71
72
73
# File 'lib/resourceful/default/urls.rb', line 71

def parent_url(object = parent_object)
  instance_route(parent_class_name.underscore, object, 'url')
end

#url_helper_prefixObject

This prefix is added to the Rails URL helper names before they’re called. By default, it’s the underscored list of namespaces of the current controller, or nil if there are no namespaces defined. However, it can be overridden if another prefix is needed. Note that if this is overridden, the new method should return a string ending in an underscore.

For example, in Admin::Content::PagesController:

url_helper_prefix #=> "admin_content_"

Then object_path is the same as admin_content_page_path(current_object).



88
89
90
# File 'lib/resourceful/default/urls.rb', line 88

def url_helper_prefix
  namespaces.empty? ? nil : "#{namespaces.join('_')}_"
end