1 / 88

Ruby On Rails

Ruby On Rails. Nhóm trình bày: NewWind Khoa CNTT - ĐHKHTN. Nội dung trình bày. Tổng quan về Ruby On Rails. 1. Kiến trúc MVC, lập trình với CSDL. 2. 3. Quản lý Session, Cookies, Mail. Scaffolding, Plugins. 4. 5. Ajax On Rails. 1. Tổng quan về Ruby On Rails. Nguồn tham khảo.

salim
Download Presentation

Ruby On Rails

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ruby On Rails Nhóm trình bày: NewWind Khoa CNTT - ĐHKHTN

  2. Nội dung trình bày Tổng quan về Ruby On Rails 1 Kiến trúc MVC, lập trình với CSDL 2 3 Quản lý Session, Cookies, Mail Scaffolding, Plugins 4 5 Ajax On Rails

  3. 1. Tổng quan về Ruby On Rails

  4. Nguồn tham khảo • http://en.wikipedia.org/wiki/Yukihiro_Matsumoto • http://www.ruby-lang.org/ • http://www.tutorialspoint.com/ • http://www.meshplex.org/wiki/Ruby/Ruby_on_Rails_programming_tutorials

  5. Tổng quan về Ruby • Ruby là: • sự kết hợp thành công của Smalltalk, Python, Perl. • Ngôn ngữ lập trình cấp cao. • Được thông dịch giống Perl, Python • Hướng đối tượng giống Smalltalk, Java • Được viết bởi Matz năm 1993

  6. Tổng quan về Ruby • Một số đặc trưng của Ruby: • Hướng đối tượng thuần túy • Dễ học tập và nghiên cứu. • Mã nguồn mỡ • Rất nhiều thư viện • Code ít, lỗi ít • Giao tiếp dễ dàng trong team

  7. Tổng quan về Ruby • Yukihiro Matsumoto (Matz) • Sinh ngày: 14 - 04 – 1965 • Quốc tịch: Nhật • Nghề nghiệp: Computer scientist, programmer “Ruby is simple in appearance, but is very complex inside, just like our human body” Matz, speaking on the Ruby-Talk mailing list, May 12th, 2000.

  8. Tổng quan về Rails • Rails là: • Web-application framework. • Được viết bởi David Heinemeier Hansson. • Mã nguồn mở

  9. Tổng quan về Rails • David Heinemeier Hansson • Sinh ngày: 15 - 10 – 1979 • Quốc tịch: Mỹ • Nghề nghiệp: programmer

  10. Tổng quan về Ruby On Rails

  11. Tổng quan về Ruby On Rails • Cài đặt: • Download InstallRails 2.0 (http://rubyforge.org/frs/?group_id=904) • Giải nén tập tin vừa download vào C:\ • Chạy file InstallRails trong thư mục vừa giải nén • Vào trang http://localhost:3000/ kiểm tra kết quả

  12. Tổng quan về Ruby On Rails • Demo 1: Hello World • Cài đặt Ruby On Rails • Tạo project ROR • Cấu hình ứng dụng (phủ quyết Active Record) • Deploy ứng dụng

  13. Tổng quan về Ruby On Rails • Embeded Ruby • <% … %> : Thực thi Ruby code • <%= … %> : Thực thi Ruby code, và in ra trang HTML • Views: phần mở rộng *.erb hoặc *.rhtml • Controllers, Models: phần mở rộng *.rb • <%# … %> : comment 1 dòng • <% • =begin • … comment nhiều dòng • =end • %>

  14. Tổng quan về Ruby • Variables: • $ten_bien: biến toàn cục, có thể sử dụng trong các class khác nhau • @ten_bien: biến thực thể, có thể sử dụng trong các phương thức khác nhau của 1 class • @@ten_bien: biến lớp, giống biến static • ten_bien: biến local • Pseudo-Variables: • self: giống $this trong PHP • nil: giống null trong PHP. • … • <% hello = nil # nếu bạn chưa xác định được kiểu của biến hello %> • <% hello1 = 1 # hello1 là biến kiểu Integer %>

  15. Tổng quan về Ruby • Types • Integer Numbers, Floating Numbers, Boolean • String Literals • <%= “Multiplication Value : #{24*60*60}”; %> • Ruby Arrays • <%ary = [ "fred", 10, 3.14] • for i in ary %> • <%= i %> • <% end %> • Ruby Hashes • <% hsh = { "red" => 0xf00, "green" => 0x0f0 } • for key, value in hsh %> • <%= “#{key} is #{value} <br/>" %> • <% end %> • Ruby Ranges • <%for n in 10..15 %> • <%= n %> • <% end %>

  16. Tổng quan về Ruby • Operator • Số học: +, -, *, /, %, … • So sánh: ==, !=, >, >=, <, <=, … • Gán: =, +=, … • Logic: &&, ||, !, … Giống C#

  17. Tổng quan về Ruby if .. else <%x=1 if x > 2 %> <%= “x is greater than 2” %> <% elsif x < 2 && x >= 0 %> <%= “x is 0, 1 or 2” %> <%else %> <%= “x is smaller than 0” %> <% end %>

  18. Tổng quan về Ruby case <% age = 5 case age when 0 .. 2 %> <%="baby" %> <% when 3 .. 6 %> <%= “little child” %> <%when 7 .. 12 %> <%= “child” %> <%when 13 .. 18 %> <%= “youth” %> <% else %> <%= “adult” %> <%end %>

  19. Tổng quan về Ruby while <% i = 0 num = 5 while i < num do %> <%= “i = #i”) %> <%i +=1 end %> for <%for i in 0..5 %> <%= “i = #{i}” %> <% end %> <%ary = [ "fred", 10, 3.14] for j in ary %> <%= “j = #{j}” %> <% end %> • break : thoát khỏi vòng lặp • next : nhảy sang bước lặp kế tiếp

  20. Tổng quan về Ruby PHP class Hello [extends Class]{ private $name; public function __construct($s) { $this->name = $s; } public function salute(){ echo “Hello $this->name”; } } // Create a new object $h = new Hello(“Ruby”); // Output "Hello Ruby!" $h->salute(); Ruby class Hello [< Class] def initialize( name ) @name = name end def salute puts "Hello #{@name}!" end End # Create a new object h = Hello.new("Ruby") # Output "Hello Ruby!" h.Salute

  21. Tổng quan về Ruby • Constant : • Ten_hang: là 1 hằng số có tên là Ten_hang • ?.rb • class Inside_two • CONST = ' inside two' • def where_is_my_CONST • CONST • end • End • ?.erb • <%= • Inside_two.new.where_is_my_CONST • %> • <%= • Inside_two::CONST • %>

  22. Tổng quan về Ruby On Rails • Demo 2: Cộng 2 số • Xử lý Request • Tương tác giữa Controller và View

  23. Tổng quan về Ruby On Rails • Demo 3: QL loại sách • Kết nối CSDL đơn giản • Tương tác trong mô hình MVC

  24. 2. Ruby On Rails, lập trình với CSDL

  25. Giới thiệu về Ruby on Rails • Ruby on Rails là một ứng dụng viết bằng ngôn ngữ Ruby, framework Rail. • Ruby on Rails còn được gọi tắt là Rails hay RoR

  26. Giới thiệu về kiến trúc MVC

  27. Trách nhiệm mỗi thành phần • Model: truy xuất, xác nhận, lưu trữ dữ liệu • View: hiển thị các thông tin, nhận dữ liệu đầu vào từ người dùng • Controller: trung gian giữa Model và View, nhận yêu cầu từ phía client

  28. Ứng dụng Rails • Tạo Controller (demo) tp>ruby script/generate controller name tp>ruby script/generate controller name action • Tạo Model tp>ruby script/generate model name • Tạo View

  29. Cấu trúc thư mục Rails demo/ ..../app ......../controller ......../helpers ......../models ......../views ............../layouts ..../components ..../config ..../db ..../doc ..../lib ..../log ..../public ..../script ..../test ..../tmp ..../vendor README Rakefile

  30. Tạo ứng dụng Hello world B1: Tạo ứng dụng hello tp>rails hello B2: Tạo Controller tp>ruby script/generate controller app B3: Tạo action method B4: Tạo View Demo

  31. Lập trình với CSDL • Cấu hình để truy cập CSDL • Mở file database.yml và config như sau Development: adapter : mysql database : database_name username : root password : host : localhost Test: adapter : mysql database : database_name username : root password : host : localhost

  32. Active Record Model • Đơn giản là thư viện dùng để tạo và thực thi truy vấn, ánh xạ: • Các bảng dữ liệu vào các lớp đối tượng • Các dòng dữ liệu vào các đối tượng • Các cột dữ liệu vào thuộc tính của các đối tượng • Sử dụng Active Record Model, ứng dụng của ta sẽ không cần phải làm việc với table, column mà thay vào đó sẽ làm việc với lớp, đối tượng, thuộc tính.

  33. Tạo mối quan hệ giữa các Model • One-to-Many class Publisher < ActiveRecord::Base has_many :books end • Many-to-One class Book < ActiveRecord::Base belongs_to :publisher end • Many-to-Many class Book < ActiveRecord::Base has_and_belongs_to_many :authors belongs_to :publisher end

  34. Migration • Thay đổi nội dung và cấu trúc lược đồ CSDL • Lưu vết các thay đổi trong lược đồ cơ sở dữ liệu (các version khác nhau) • Demo

  35. Demo cách thức hoạt động <%= link_to 'Add a new author', :action => 'new' %> Trỏ tới action new được định nghĩa trong Controller

  36. Demo cách thức hoạt động #phuong thuc nay duoc goi khi ban muon hien trang cho nguoi dung nhap bao cho ứng dụng Rails biet chung ta se thuc hien them 1 record moi vao trong database def new @author = Author.new @page_title = 'Create new author' end Khi đó Action new sẽ render tới trang new.html tương ứng

  37. Demo cách thức hoạt động <body> <%= form_tag :action => 'create' %> <p> <label for="author_first_name">First name</label><br/> <%= text_field 'author', 'first_name' %> </p> <p> <label for="author_last_name">Last name</label><br/> <%= text_field 'author', 'last_name' %> </p> <%= submit_tag 'Create' %> <%= form_tag %> <%= link_to 'Back', {:action => 'index'} %> </body>

  38. Demo cách thức hoạt động Thực hiện thao tác submit sẽ trỏ tới action create thông qua HTTP REQUEST MODEL BIDING Vấn đề đặt ra là làm sao để HTTP REQUEST có thể truyền dữ liệu do người dùng nhập vào tới các actionmethod?

  39. Demo cách thức hoạt động Đâu là sự khác biệt giữa 2 dòng lệnh này? <%= text_field‘author', 'first_name' %> <input type=”text” name=”first_name”> Dòng 1: Kết buộc dữ liệu trong text_field với đối tượng được đặt tên là author (tên tùy ý) Kết buộc vậy để làm gì?

  40. Demo cách thức hoạt động • Xét action create def create @author = Author.new(params[:author]) if @author.save redirect_to :action => 'index' else @page_title = 'Create new author' render :action => 'new' end end • Dữ liệu truyền từ form sẽ kết buộc với 1 đối tượng do ta định nghĩa (tên tùy ý) • Đối tượng này được truyền vào trong params dùng để insert dữ liệu • Model insert 1 author mới với dữ liệu được lưu trữ trong params • Lưu ý:Tên của tag phải tuyệt đối giống với thuộc tính định nghĩa trong Model

  41. Demo cách thức hoạt động class Author < ActiveRecord::Base has_and_belongs_to_many :books validates_presence_of :first_name, :last_name def name "#{first_name} #{last_name}" end end

  42. create new.html new Model Controller View Demo • Tóm lại quá trinh này thực hiện như sau:

  43. Lợi ích khi sử dụng MVC • Ta thấy cả View và Controller đều phụ thuộc vào Model. Trong khi Model thì không biết gì, hay hoàn toàn độc lập với View và Controller  Model có thể được build và test mà không ảnh hưởng hay phụ thuộc đến phần hiển thị

  44. 3. Quản lý session, cookies, mail

  45. Session • Sesion là vùng nhớ được tạo ra từ bộ nhớ của server, dùng để lưu trữ dữ liệu của người dùng (username, password, …). • Cách dùng: • Lưu dữ liệu vào session session[:data] = @data • Lấy dữ liệu từ session @data = session[:data]

  46. Cookies • Cookies là mẩu tin nhỏ được lưu trong máy của người dùng, dùng để lưu trữ dữ liệu của người dùng (username, password, …) • Cách dùng: • Lưu dữ liệu vào session cookies[:data] = @data • Lấy dữ liệu từ session @data = cookies[:data]

  47. Send and Receive Email • Action Mailer là thành phần được tích hợp sẵn trong ứng dụng Rails dùng để gởi và nhận mail • Phiên bản mới nhất của Action Mailer có thể tìm thấy tại địa chỉ http://rubyforge.org/frs/?group_id=361 • Tham khảo http://en.wikibooks.org/wiki/Ruby_on_Rails/ActionMailer http://api.rubyonrails.org/files/vendor/rails/actionmailer/README.html http://api.rubyonrails.org/classes/ActionMailer/Base.html

  48. Action mailer configuration • Vào thư mục config, mở file environment.rb và thêm vào các dòng code sau: config.action_mailer.delivery_method = :test|:smtp|:sendmail ActionMailer::Base.smtp_settings = {   :address => “smtp.example.com",   :port => 25,   :domain => ".com", :authentication => :login,   :user_name => "peter_marklund@fastmail.fm", :password => "..." }   config.action_mailer.perform_deliveries = true | false config.action_mailer.default_charset = “utf-8"

  49. Generate a Mailer Model • Sử dụng câu lệnh sau để tạo 1 mailer ruby script/generate mailer Emailer • app\models\emailer.rb class Emailer <ActionMailer::Base end

  50. Mailer Model class Emailer < ActionMailer::Base def sendmail(recipient, subject, message, sent_at = Time.now) @subject = subject @recipients = recipient @from = 'lsytuan@gmail.com' @sent_on = sent_at @headers = {} @bcc = 'lsytuan@gmail.com' @content_type = "text/html" end end

More Related