class HumanRoutes::Context
Attributes
controller[R]
options[R]
Public Class Methods
new(controller, options = {})
click to toggle source
# File lib/human_routes/context.rb, line 8 def initialize(controller, options = {}) @controller = controller @options = options end
Public Instance Methods
all()
click to toggle source
# File lib/human_routes/context.rb, line 149 def all create update remove show list unless controller_name == controller_name.singularize end
controller_name()
click to toggle source
# File lib/human_routes/context.rb, line 13 def controller_name @controller_name ||= options.delete(:name) { controller.to_s } end
create(*args)
click to toggle source
# File lib/human_routes/context.rb, line 29 def create(*args) path, name, options = extract_route_args( segment: :new, default_name: "new_#{singular_controller_name}", args: args ) routes << [ path, { via: :get, controller: controller, action: :new, as: name }.merge(options) ] routes << [ path, { via: :post, controller: controller, action: :create, as: "" }.merge(options) ] end
list(*args)
click to toggle source
# File lib/human_routes/context.rb, line 113 def list(*args) path, name, options = extract_route_args( segment: :list, default_name: controller_name, args: args ) routes << [ path, { via: :get, controller: controller, action: :index, as: name }.merge(options) ] end
remove(*args)
click to toggle source
# File lib/human_routes/context.rb, line 85 def remove(*args) path, name, options = extract_route_args( segment: :remove, default_name: "remove_#{singular_controller_name}", args: args ) routes << [ path, { via: :get, controller: controller, action: :remove, as: name }.merge(options) ] routes << [ path, { via: :post, controller: controller, action: :destroy, as: "" }.merge(options) ] end
resource?()
click to toggle source
# File lib/human_routes/context.rb, line 21 def resource? controller_name == singular_controller_name end
routes()
click to toggle source
# File lib/human_routes/context.rb, line 25 def routes @routes ||= [] end
show(*args)
click to toggle source
# File lib/human_routes/context.rb, line 131 def show(*args) path, name, options = extract_route_args( segment: :show, default_name: singular_controller_name, args: args ) routes << [ path, { via: :get, controller: controller, action: :show, as: name }.merge(options) ] end
singular_controller_name()
click to toggle source
# File lib/human_routes/context.rb, line 17 def singular_controller_name @singular_controller_name ||= controller_name.singularize end
update(*args)
click to toggle source
# File lib/human_routes/context.rb, line 57 def update(*args) path, name, options = extract_route_args( segment: :edit, default_name: "edit_#{singular_controller_name}", args: args ) routes << [ path, { via: :get, controller: controller, action: :edit, as: name }.merge(options) ] routes << [ path, { via: :post, controller: controller, action: :update, as: "" }.merge(options) ] end
Private Instance Methods
default_options()
click to toggle source
# File lib/human_routes/context.rb, line 166 def default_options { format: false } end
extract_route_args(segment:, default_name:, args:)
click to toggle source
# File lib/human_routes/context.rb, line 157 def extract_route_args(segment:, default_name:, args:) route_options = args.extract_options! route_options = default_options.merge(options).merge(route_options) path = args.first || path_for(segment, route_options) name = route_options.delete(:as) { default_name.underscore.tr("/", "_") } [path, name, route_options] end
path_for(segment, options)
click to toggle source
# File lib/human_routes/context.rb, line 172 def path_for(segment, options) param = options.fetch(:param, :id) segments = if resource? resource_segments(segment, param) else resources_segments(segment, param) end segments.compact.join("/") end
resource_segments(segment, _param)
click to toggle source
# File lib/human_routes/context.rb, line 184 def resource_segments(segment, _param) segments = [controller_name] segments << segment unless segment == :show segments end
resources_segments(segment, param)
click to toggle source
# File lib/human_routes/context.rb, line 190 def resources_segments(segment, param) case segment when :list [controller_name] when :new [controller_name, segment] when :show [controller_name, ":#{param}"] else [controller_name, ":#{param}", segment] end end