Ruby on Rails+MySQL
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…