up home page bottom

Add a comment

French German version Spanish version Italian version

Ruby On Rails - Getting Started

1 Star5 Stars (+5 rating, 1 votes)
Loading ... Loading ...

Ruby on Rails is an open source web application framework. It is written in Ruby and follows the MVC or Model-View-Controller architecture. Developers using RoR appreciate the ability to create applications using less code and requiring a minimum of configuration.

RoR has been picking up a lot of speed lately. Most notably is the Blog with comments in 15 minutes tutorial video.

How does one get started with RoR though? Hopefully we can help you out a bit here.

I won't get too much into the installation process of RoR. For that, you can refer to this guide. Here are also a good set of start of quick reference guides:

Ok so after you've gotten your RoR set up and installed, what are the basics and functionality of the language? Let's start off with a few good real world examples.

We'll go over two examples. One: Sending Emails with Ruby On Rails, and Two: Uploading files with Ruby On Rails.

Sending Emails With Ruby on Rails.

Action Mailer is the Rails component that enables applications to send and receive e-mail. In this chapter we will see how to send an email using Rails. So lets start with creating a emails project using following command.

RUBY:
  1. C:\ruby\> rails emails

This will create the required framework to proceed. Now we will start with configuring Action Mailer.

Action Mailer - Configuration

Following are the steps you have to follow to complete your configruation before proceeding with actual work:

Go into config folder of your emails project and open environment.rb file and add the following line at the bottom of this file.

RUBY:
  1. ActionMailer::Base.delivery_method = :smtp

This tells ActionMailer that you want to user SMTP server. You can also set it to be :sendmail if you are using a Unix-based operating system such as Mac OS X or Linux.

Add the following lines of code to the bottom of your environment.rb as well.

RUBY:
  1. ActionMailer::Base.server_settings = {
  2. :address => "smtp.tutorialspoint.com",
  3. :port => 25,
  4. :domain => "tutorialspoint.com",
  5. :authentication => :login,
  6. :user_name => "username",
  7. :password => "password",
  8. }

The values given in double quotes will be different for your SMTP server. You can take this information from your Inernet Service Provider if you already don't know. You don't need to change port number 25 and authentication type if you ar eusing standard SMTP server.

Next step will be to create a mailer

Generate a mailer:

Use the following command to generate a mailer as follows:

RUBY:
  1. C:\ruby\> cd emails
  2. C:\ruby\emails> ruby script/generate mailer Emailer

This will create a file emailer.rb in app\models directory. Check the content of this file is as follows:

RUBY:
  1. class Emailer> ActionMailer::Base
  2. end

Let's create one method as follows.

RUBY:
  1. class Emailer> ActionMailer::Base
  2. def contact(recipient, subject, message, sent_at = Time.now)
  3. @subject = subject
  4. @recipients = recipient
  5. @from = 'no-reply@yourdomain.com'
  6. @sent_on = sent_at
  7. @body["title"] = 'This is title'
  8. @body["email"] = 'sender@yourdomain.com'
  9. @body["message"] = message
  10. @headers = {}
  11. end
  12. end

The contact method has four parameters a recipient, subject, message and a sent_at, which defines when the e-mail is sent. The method also defines six standard parameters that are a part of every ActionMailer method:

  • @subject defines the e-mail subject.
  • @body is a Ruby hash that contains values with which you can populate the mail template. You created three key-value pairs: title, email, and message
  • @recipients is a list of the people to whom the message is being sent.
  • @from defines who the e-mail is from.
  • @sent_on takes the sent_at parameter and sets the timestamp of the e-mail.
  • @headers is another hash that enables you to modify the e-mail headers. For example, you can set the MIME type of the e-mail if you want to send either plain text or HTML e-mail.

Now we will create a mailer template which is just text with standard Rails <%= %> placeholders scattered throughout.

Put following code in app/views/contact.rhtml file

RUBY:
  1. Hi!
  2.  
  3. You are having one email message from &lt;%= @email %&gt; with a tilte
  4.  
  5. &lt;%= @title %&gt;
  6. and following is the message:
  7. &lt;%= @message %&gt;
  8.  
  9. Thanks

Next we will create a controller for this application as follows:

RUBY:
  1. C:\ruby\emails&gt; ruby script/generate controller Emailer

Now lets define a controller method in emailer_controller.rb which will call Model method to send actual email as follows:

RUBY:
  1. class EmailerController &lt;ApplicationController
  2. def sendmail
  3. email = @params["email"]
  4. recipient = email["recipient"]
  5. subject = email["subject"]
  6. message = email["message"]
  7. Emailer.deliver_contact(recipient, subject, message)
  8. return if request.xhr?
  9. render :text =&gt; 'Message sent successfully'
  10. end
  11. end

To deliver e-mail using the mailer.s contact method, you have to add deliver_ to the beginningof the method name. You add a return if request.xhr? line so that you can escape to Rails Java Scripr (RJS) if the browser does not support JavaScript and then tell the method to render a text message.

You are almost done except to prepare a screen from where you will get user information to send email. So lets define one screen method index in controller and corresponding view:

Add following code in emailer_controller.rb file

RUBY:
  1. def index
  2. render :file =&gt; 'app\views\emailer\index.rhtml'
  3. end

Now let's define our view in app\views\emails\index.rhtml

RUBY:
  1. &lt;h1&gt;Send Email&lt;/h1&gt;
  2. &lt;%= start_form_tag :action =&gt; 'sendmail' %&gt;
  3. &lt;p&gt;&lt;label for="email_subject"&gt;Subject&lt;/label&gt;:
  4. &lt;%= text_field 'email', 'subject' %&gt;&lt;/p&gt;
  5. &lt;p&gt;&lt;label for="email_recipient"&gt;Recipient&lt;/label&gt;:
  6. &lt;%= text_field 'email', 'recipient' %&gt;&lt;/p&gt;
  7. &lt;p&gt;&lt;label for="email_message"&gt;Message&lt;/label&gt;&lt;br/&gt;
  8. &lt;%= text_area 'email', 'message' %&gt;&lt;/p&gt;
  9. &lt;%= submit_tag "Send" %&gt;
  10. &lt;%= end_form_tag %&gt;

Now you can test the simple application vie (granted you follow the guide) at: http://127.0.0.1:3000/Emailer/index.

I'll make another post with regard to file uploading in ruby on rails. Enjoy.

Spread the Love: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • TwitThis
  • Technorati
  • del.icio.us
  • Facebook
  • Sphinn
  • Mixx
  • Google
  • Live
  • YahooMyWeb
  • blogmarks
  • BlogMemes
  • co.mments
  • Fark
  • feedmelinks
  • Gwar
  • Linkter
  • Netvouz
  • Smarking
  • Socialogs
  • Taggly
  • Yigg

Leave a Comment

Leave a comment or send a note
  1. (required)
  2. (valid email required)
  3. (required)
  4. Send
 

cforms contact form by delicious:days