Ruby on Rails+MySQL. Sebesta corvette example In rails_apps create a directory (car_app), change to...

Post on 19-Jan-2016

220 views 0 download

transcript

Ruby on Rails+MySQL

Sebesta corvette example

• In rails_apps create a directory (car_app), change to this dir and run rails (rails cars)

Rails_apps

Car_app cars

Go to cars dir and type: ruby script/generate controller main

C:\InstantRails\rails_apps>mkdir car_app

C:\InstantRails\rails_apps>cd car_app

C:\InstantRails\rails_apps\car_app>rails cars create create app/controllers create app/helpers create app/models create app/views/layouts create config/environments create components create db create doc create lib create lib/tasks … C:\InstantRails\rails_apps\car_app>cd cars

C:\InstantRails\rails_apps\car_app\cars>ruby script/generate controller main exists app/controllers/ exists app/helpers/ create app/views/main exists test/functional/ create app/controllers/main_controller.rb create test/functional/main_controller_test.rb create app/helpers/main_helper.rb

C:\InstantRails\rails_apps\car_app\cars>

Building tables

• I used phpmyadmin to build the tables.

• The text uses scripts in mysql to generate the tables.

main/welcome

Requesting all coupes from 1970 to 2005

Source files for cars app (with little guidance on where to put them)

Where to put the files

• Put controllers in controllers

• Put rhtml (or directories with display.rhtml) in views

• Models dir

controllers

views

Create a new database, cars_development

Phpmyadmin from rails

Looking at a table

An app dir in a rails application

Trying to register to be a member returns “user created” if no errors

User “secretariat” created

Secretariat in db

So what all is in this app?

application.rb

# Filters added to this controller apply to all controllers in the application.

# Likewise, all the methods added will be available for all controllers.

class ApplicationController < ActionController::Base

# Pick a unique cookie name to distinguish our session data from others'

session :session_key => '_rail_space_session_id'end

site_controllerclass SiteController < ApplicationController

def index @title="Welcome to 'My' RailSpace!" end

def about @title="About 'My' RailSpace!" end

def help @title="Help for 'My' RailSpace!" endend

user_controllerclass UserController < ApplicationController

def index end

def register @title = "Register" if request.post? @user = User.new(params[:user]) if @user.save render :text => "User created!" end end endend

app/models- users.rb in notes

App/views/user

register.rhtml<h2>Register</h2> <% form_for :user do |form| %> <fieldset> <legend>Enter Your Details</legend> <%= error_messages_for "user" %> <div class="form_row"> <label for="screen_name">Screen name:</label> <%= form.text_field :screen_name, :size => User::SCREEN_NAME_SIZE, :maxlength => User::SCREEN_NAME_MAX_LENGTH %> </div> <div class="form_row"> <label for="email">Email:</label> <%= form.text_field :email, :size => User::EMAIL_SIZE, :maxlength => User::EMAIL_MAX_LENGTH %> </div> <div class="form_row"> <label for="password">Password:</label> <%= form.password_field :password, :size => User::PASSWORD_SIZE, :maxlength => User::PASSWORD_MAX_LENGTH %> </div> <div class="form_row"> <%= submit_tag "Register!", :class => "submit" %> </div> </fieldset> <% end %>

login.rhtml<h2>Log in</h2><% form_for :user do |form| %><fieldset> <legend>Enter Your Details</legend> <div class="form_row"> <label for="screen_name">Screen name:</label> <%= form.text_field :screen_name, :size => User::SCREEN_NAME_SIZE, :maxlength => User::SCREEN_NAME_MAX_LENGTH %> </div> <div class="form_row"> <label for="password">Password:</label> <%= form.password_field :password, :size => User::PASSWORD_SIZE, :maxlength => User::PASSWORD_MAX_LENGTH %> </div> <div class="form_row"> <%= submit_tag "Login!", :class => "submit" %> </div></fieldset><% end %><p> Not a member? <%= link_to "Register now!", :action => "register" %></p>

Now…logging in

And then…