Routing Basics: Ruby on Rails for Front-End Developers

Routing Basics: Ruby on Rails for Front-End Developers

This guest post is by Miles Matthias, who in between trips and sips, usually with planes and bourbon, enjoys talking to people about difficult challenges and tapping on his keyboard to help solve them. He moved to Boulder in January of 2012, after meeting his future wife and picking up degrees in Computer Science and Information Assurance in Omaha, Nebraska. Boulder was his ninth move after growing up in Virginia, Kansas, Illinois, and Indiana, and would be more than happy if Colorado became his permanent home. With experience in network security monitoring, vulnerability assessments, red hat teaming, bash scripting, and web and iOS development, he enjoys building simple and beautiful applications, contributing to the open source community, and writing about his life experiences.

Miles Matthias

Here’s an excerpt from my book’s chapter on routing, and then I’ll give you some examples:

Routes config

Remember that bit about convention over configuration? Well rails definitely prefers configuration to convention in one instance – routes. In the file config/routes.rb, you’ll find direction given to the rails router on which controller method to call for a given request. Here’s a simple route declaration:

match 'articles', to: 'articles#index'

If a user makes a request to yoursite.com/articles, the rails router will look for a controller called ArticlesController and if there’s a method called index, it will call it, passing along the information in the request. Then it’s up to the controller to respond.

Resources

You’ll also see what rails calls resources in the routes file, which promotes the convention over configuration pattern. Resources handle the 85% case where your application is representing standard RESTful CRUD operations on a ‘thing’, such as an article. The above example route could be replaced with:

resources :articles

which would then mandate that the method names in the matching controller match the rails resourceful actions.

Examples

If we had the following in your config/routes.rb file:

resources :articles

and our /app/controllers/articles_controller.rb file looked like this:

class ArticlesController < ApplicationController
  def index
    @articles = Article.all
  end
  def show
    @article = Article.find(params[:id])
  end
  def edit
    @article = Article.find(params[:id])
  end
end

Here’s the list of what HTTP Verbs and URL combinations match to what methods inside a controller:


(Credit: http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions)

Notice in the controller that we didn’t call render at all. That’s because Rails automatically attempts to render a view that has a filename of the same name of the method called in the controller. If it can’t find one, it will default to the index.html view for the controller, or the application index.html.

For example, if someone wanted to get an article at http://mywebsite.com/articles/1234, Rails would call the show method in our controller with 1234 as the id param. That method (above) will find the article that matches that id and then rails will call render on a view in /app/views/articles/show.html.erb. Here’s an example of what that view might look like:

<h1>
    <%= @article.title %>
</h1>
<h2>
    by <%= @article.author %>
</h2>
<%= @article.body %>

If you’d like to learn more about how Ruby on Rails’ front-end stack works or you’re a front-end developer needing to do some work in Ruby on Rails, check out my book, “Ruby on Rails Explained for Front-End Developers”.

Feel free to ask questions and give feedback in the comments section of this post. Thanks!

comments powered by Disqus