You are on page 1of 13

Tạo một ứng dụng say hello với Rails

Để hiển thị một câu hello thì cần có :


B1: Một tuyến đường (routes)
ở file routes.db:
get "/articles", to: "articles#index"
- Lệnh định tuyến mô tả rằng lấy /articles và ánh xạ đến index hành động của
ArticlesController

B2: Một bộ điều khiển (Controller)


- Để khởi tạo ArticlesController và index action, chúng ta sẽ chạy lệnh khởi tạo:
bin/rails generate controller Articles index --skip-routes
ở file articles_controller.rb sẽ có hàm index rỗng vì vậy Rails sẽ đưa chúng ta tới
thực hiện file index.html.erb
B3: Một view để hiển thị
Trong file app/views/articles/índex.html.erb
Tạo lệnh html cần hiển thị sau đó truy cập vào trang 127.0.0.1:3000/articles

MVC và You

1. Khởi tạo một Model


Model là một class trong Ruby được sử dụng để tbiểu diễn dữ liệu . Ngoài ra Model còn
có thể tương tác với database của ứng dụng thông qua một tính năng gọi là
ActiveRecord
Để định nghĩa một model mới, chúng ta sử dụng lệnh khởi tạo :
rails generate model Article title:string body:text
Một số file sẽ được tạo ra nhưng chúng ta chỉ cần chú ý vào hai file này :
+ db/migrate/<timestamp>_create_articles.rb file khởi tạo
+ app/models/article.rb file model

2. Khởi tạo Database

Trong file <timestamp>_create_articles.rb đã được tạo ở trên. Rails sẽ tạo ra một


create_table của articles được sử dụng để chứa các bài viết và mỗi bài viết được gắn cho
mình một id bắt đầu từ id = 1, Trong mỗi article có 3 tính năng title, body và timestamps . Tính
năng timestamps sử dùng cho create_at và updated_at.
Như vậy có thể thấy rằng Rails sẽ tự động tạo hoặc thiết lập các giá trị khi chúng ta tạo
hoặc update các đối tượng của mô hình.
Sau đó chạy lệnh : rails db:migrate lệnh sẽ hiển thị rằng table đã được tạo.

3. Sử dụng Model để tương tác với Database


Chúng ta có thể tương tác với Model bằng cách sử dụng các lệnh console. Các lệnh
console này là một môi trường tương tác như irb
Để vào chế độ console sử dụng lệnh:
rails console
Một số lệnh cần chú ý như ;
+ Khởi tạo một article mới
article = Article.new(title: "Tran Minh Huy", body: "I am a Student of Duy Tan")
+ Lưu article vừa mới tạo
article.save()
+ Huỷ article vừa tao:
article.destroy()
+ Update một article :
article.update(title: “”)
+ Tìm một article tại một id nào đó:
article.find(1)
+ List toàn bộ các Article hiện có:
article.all

4. Trình bày thành danh sách các Articles


Ở phần trước chúng ta đã tạo một hàm index ở file article_controller.rb, bây giờ chúng
ta sẽ chỉnh sửa lại hàm đó để nó có trình bày một danh sách các article đã được khởi tao.

Sau khi đã tạo xong hàm index chúng ta sẽ qua file app/views/articles/index.html.erb.
Bằng cách sử dụng lệnh ruby kết hợp với html để tạo ra một danh sách hiển thị từng article

CRUD (Tạo, Đọc, Cập nhật và Xóa)

Hiển thị một Article đơn


Vẫn như các bước cũ :
B1: Một tuyến đường (routes)
ở file routes.db:
get “/articles/:id", to : “article#show"
- Lệnh định tuyến mô tả rằng lấy /articles/:id , mỗi article được gán cho mình một id bắt
đầu từ 1 vì vậy khi :id chúng ta sẽ mở article tại id đó và ánh xạ đến article_controller tại
hàm show
B2: Một bộ điều khiển (Controller)
Ở file app/controllers/articles_controller.rb:
Tạo một hàm mới sử dụng để hiển thị một article cụ thể . Để Rails có thể hiểu
được chúng ta muốn hiển thị article nào thì đưa ra điều khiển Article.find(id)
B3: Một view để hiển thị
Tạo file app/views/articles/show.html.erb
Tạo lệnh html cần hiển thị sau đó truy cập vào trang 127.0.0.1:3000/articles

Resourceful Routing
Rails có hỗ trợ một phương thức ánh xạ tài nguyên bằng cách sử dụng root đặt vào
index và resources cho articles thì có thể truy cập đến từng article
root "articles#index"
resources :articles

Cách tạo một articles mới


GIống như phương pháp sử dụng console nhưng ở đây các lệnh console sẽ được đưa vào
trong articlle_controller, ở đây sẽ chứa các lệnh thực thi hành động tạo một article mới bằng
các thêm vào hai hàm mới là hàm new và hàm create
Hàm create sẽ khởi tạo một article mới và nếu lệnh save được thực thi thì Rails sẽ
chuyển hướng article này đến /article/:id còn nếu có lỗi trong quá trình lưu thì Rails sẽ báo lỗi

Ở đây để tạo một article mới, chúng ta sẽ sử dụng một phương thức được gọi là form
builder. Sử dụng form builder chúng ta có thể viết ra một biểu mẫu có đầy đủ cấu hình và tuân
theo quy chuẩn của Rails
+ Đầu tiên cần tạo một view gọi là new.html.erb dùng để tạo một form theo mẫu
+ Tạo một phương thức gọi là form_with dùng để chứa các biểu mẫu trong form_with
chứa các phương thức label và text_field để xuất ra các phần tử biểu mẫu thichs hợp

+ Kết quả của biểu mẫu được tạo ra , biểu mẫu này sẽ được chứa trong phương
thức được gọi là param để phục vụ cho việc gọi lại trong controller
Sử dụng các strong parameters

Xác thực và hiển thị thông báo lỗi


Trong quá trình nhập nếu nhập những giá trinh không đúng thì dễ gây ra lỗi, vì vậy Rails
cung cấp một phương thức gọi là validation giúp cho người dùng phải tuân theo một số quy tắc
nhập giá trị nếu không thì giá trị sẽ không được khởi tạo
Hãy thêm một số validation vào file app/model/article.rb

Validate đầu tiên yêu cầu presence là true nghĩa là không được bỏ trống , validate thứ hai cũng
vậy nhưng có thêm yêu cầu là độ dài tối thiểu là 10
Sau đó để lỗi này có thể áp dụng vào cho title và body thì cần chỉnh sửa lại khi nhập vào
ở file new.hrml.erb và trình điều khiển ở article_controller
Kêt thúc
Tạo một liên kết đến trang khởi tạo article bằng cách thêm đường dẫn ở trang index

Update một Article


Cũng như cách tạo một articles mới , chúng ta sẽ sử dụng các bước giống như ở trên
Đầu tiên cũng sẻ phải thiết lập hàm edit và hàm update trong article_controller
Lệnh upadate có nhiệm vụ sẽ tìm article tại id đó và thực hiện lệnh update cho id và trả
về /article/:id

Sử dụng các phần để chia sẻ mã chế độ xem


Ở đây chúng ta thấy rằng Tạo một Article mới và Update một Article có thể dùng chung một
form giống nhau nên chúng ta có thể tạo ra một _form.html.erb để có thể dùng chung code cho
hai tính năng này

Và khi đó ở hai file new.html.erb và edit.html.erb sẽ sử dụng lệnh render của ruby để sử dụng
được phần code ở _form.html.erb

Xoá một Article


Ở đây nếu bạn muốn xoá một article thì bạn chỉ cần dùng lệnh destroy và trả về trang chính và
hiển thị những article còn lại VÌ vậy chúng tôi tạo hàm destroy ở article_controller
Ở file show.html.erb chúng ta sẽ phải tạo một nút dùng để xoá article đó

Bổ sung thêm
+ CHúng ta có thể xem chi tiết các article mà không cần phải sử dụng đường link bằng cách +
+ Chúng ta gắn link trực tiếp vào trong các title hoặc id ở file index
<a href="<%= article_path(article) %>"><%= article.title %></a>
+ Trong cùng một thư mục Rails sử dụng để chứa các project không thể sử dụng lệnh rails
generate với cùng một tên
CHúng ta có thể xem port của rails bằng cách vào file puma.rb

Tạo Một Model Thứ Hai

Khởi tạo model

Cũng như cách khởi tạo như trên chúng ta cũng sẽ khởi tạo một model gọi là Comment bao
gồm hai thành phần là commenter và body

Ở file comment.rb có một sự khác biệt đó là belongs_to:article bằng cách sử dụng từ khoá
reference, nó tạo một cột mới trên bảng dữ liệu của bạn với tên mô hình đã cung cấp là article
với một id mà có thể chứa các giá trị số nguyên. Nói một cách khác là mỗi Article được xem
như là một nơi chứa là thao tác với những comment chứa trong nó và có thể được truy xuất
bằng cách @aritcle.comments

Từ đây chúng ta sẽ bắt đầu khởi tạo những comment trong article

LIên kết các mô hình


Active Record cho phép bạn có thể khai báo mối quan hệ giữa các mô hình với nhau . Ở đây
chúng ta có thể nêu ra được hai mối quan hệ chính đó là :
+ Mỗi Comment thuộc về một Article

+ Mỗi Article có thể chứa nhiều Comment

Thêm định tuyến cho những comment

Việc làm như thế này tạo ra những comment nằm trong từng article thể hiện mối quan hệ thứ
bậc giữa các article và comment

Tạo controller cho Comments

Sử dụng lệnh bin/rails generate controller Comments


Đây là các file đã tạo gồm có file controller cho comment, thư mục để tạo các file liên quan đến
view, file để test , và file helpers
TIếp theo chúng ta sẽ viết file View bao gồm là show các Comment và Tạo một comment mới

Bắt đầu cấu hình từ file comment_controller.rb. Vì trong phần trên chúng ta đã khởi tạo hàm
create từ trong Rails nên chúng ta cũng sẽ làm tương tự nhưng ở đây để Rails có thể hiểu
được rằng chúng ta đang tạo Comment cho Article nào thì chúng ta phải sử dụng lệnh find cho
Article và gọi lệnh create cho Article đó

Và cuối cùng thì chúng ta có thể tạo ra một Comment mới và hiển thị nó phía dưới Article

Tái cấu trúc

Tách thành nhiều phần riêng biệt

Ở phần Article trước chúng ta đã tạo ra một file form riêng biệt cho phần tạo mới và update có
thể dùng chung với nhau Vì vậy ở đây chúng ta cũng sẽ tách phần create ra riêng và phần
show ra riêng

Bằng hai cách render khác nhau này Rails sẽ tìm đến thư mục comments và làm việc ở file
_form.html.erb và file _comment.html.erb
Bảo mật

Xác thực cơ bản


Rails có cung cấp một phương thức xác thực HTTP giúp cho việc xác thực giúp ngăn chặn một
số người dùng vào chỉnh sửa bài viết ở đây chúng ta sẽ sử dụng phương thức
http_basic_authenticate_with
Để sử dụng phương thức này thì ở trong file Article controller.rb

You might also like