Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

padrino-routing

Package Overview
Dependencies
Maintainers
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

padrino-routing

  • 0.5.0
  • Rubygems
  • Socket score

Version published
Maintainers
4
Created
Source

= padrino-routing

This component provides Sinatra with an enhanced url routing system which enables named route aliases to be defined and used throughout your application to refer to urls. The benefits of this is that instead of having to hard-code route urls into every area of your application, now we can just define the urls in a single spot and then attach an alias which can be used to refer to the url throughout the rest.

== Installation

To install the 'full-stack' padrino framework, simply grab the latest version from gemcutter:

$ sudo gem install padrino --source http://gemcutter.org

This will install the necessary padrino gems to get you started. Now you are ready to use this gem to enhance your existing Sinatra projects or build new Padrino applications.

You can also install only the padrino-routing gem for more fine-grained use:

$ sudo gem install padrino-routing --source http://gemcutter.org

== Usage

Let's take a look at how to define named route mappings:

/app/routes/example.rb

require 'padrino-routing'

class RoutingDemo < Sinatra::Application register Padrino::Routing

# Define the named route mappings
map(:account).to("/the/accounts/:name/and/:id")
map(:accounts).to("/the/accounts/index")

# Configure the routes using the named alias
get(:account)  { "name: params[:name] - id: params[:id]" }    
get(:accounts) { "I am the body for the url /the/accounts/index" }

end

Notice we simply create a route alias using the map function and then pass in the corresponding url into the to method. You can then define the routes using the named symbol representing the url. The route aliases can be accessed using url_for

url_for(:accounts) url_for(:account, :id => 1, :name => 'first')

You can also refer to the url in views using url_for

/app/views/index.erb

Go to the <%= link_to 'accounts dashboard', url_for(:accounts) %> to view your accounts

Go to account for <%= link_to 'first account', url_for(:account, :id => 1, :name => 'first') %>

Simply invoking url_for(name, *parameters) will return the full mapped url for use in links or anywhere else that the url might be required.

The routing plugin supports inline route definitions as well in which the url and the named alias are defined together within the controller:

app/controllers/example.rb

SimpleApp.controllers do get :index, :map => '/index' do ... end

get :account, :map => '/the/accounts/:name/and/:id' do
  # access params[:name] and params[:index]
end

end

Routes defined inline this way can be accessed and treated the same way as traditional named aliases.

The routing system also supports url route configuration namespaces:

/app/routes/example.rb

map(:admin, :show).to("/admin/:id/show")

namespace :admin do get :show do "admin show for #{params[:id]}" end end

You could also define the route aliases themselves using a namespace for convenience:

/app/routes/example.rb

map :admin do |namespace| namespace.map(:show).to("/admin/:id/show") namespace.map(:destroy).to("/admin/:id/destroy") end

namespace :admin do get :show do "admin show for #{params[:id]}" end

get :destroy do
  "admin destroy for #{params[:id]}"
end

end

You can then reference the urls using the same url_for method:

<%= link_to 'admin show page', url_for(:admin, :show, :id => 25) %> <%= link_to 'admin index page', url_for(:admin, :destroy, :id => 25) %>

In addition to regular namespacing, as a shortcut you can have a controller serve as a namespace as well:

/app/routes/admin.rb

SimpleApp.controllers :admin do get :index, :map => "/admin/:id/index" do "admin destroy for #{params[:id]}" end end

This will put all named routes within this controller block into the 'admin' namespace and then can be referenced:

<%= link_to 'admin index page', url_for(:admin, :index, :id => 25) %>

Note that controller namespaces are simply a shortcut for standard namespaces and do not differ in any other way.

You can freely use both named route aliases and traditional Sinatra routes in the same application without any conflicts.

See the wiki article for additional information: <...WIKI...>

== Copyright

Copyright (c) 2009 Padrino. See LICENSE for details.

FAQs

Package last updated on 07 Jan 2010

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc