Routes in Rails3
Rails3 define routes in more efficient way
Routes for CRUD actions {% codeblock lang:ruby%} resources :users {% endcodeblock %}
Also define for multiple resources {% codeblock lang:ruby%} resources :users, :blogs, :books {% endcodeblock %}
Nested Routes
{% codeblock lang:ruby%} resources :users do resources :blogs end {% endcodeblock %}
Member and collection
{% codeblock lang:ruby%} resources :blogs do :get => :preview, :on =>:member :get => :list, :on =>:collection end {% endcodeblock %}
if we have more than one collection or member functions
{% codeblock lang:ruby%} resources :blogs do member do :get :preview :put :sort end collection do :get :list :get :detailed_info end end {% endcodeblock %}
Named Routes
{% codeblock lang:ruby%} match "history" => "site#index", :as => :history {% endcodeblock %}
Adding :as makes it a named route so that we can use historypath or historyurl in our application.
Route for Root {% codeblock lang:ruby%}
root :to => "home#index"
{% endcodeblock %}
Constraints and Parameters in routes {% codeblock lang:ruby%}
match "search/:email(/:firstname/:lastname)" => "users#search", :constraints => {:email => /\A([^@\s]+)@((?:[-a-z0-9]+.)+[a-z]{2,})\Z/i}
{% endcodeblock %} Here email is mandatory parameter and first_name and last is optional parameter and in constraints email format is defined