Giới thiệu về Friendly URLs
Bài đăng này đã không được cập nhật trong 8 năm
Chào mọi người, hôm nay mình sẽ giới thiệu về cách tạo đường dẫn thân thiện một cách nhanh chóng.
Theo mặc định, một ứng dụng rails xây dựng các URL dựa trên khóa chính - tức là cột id của cơ sở dữ liệu. Hãy tưởng tượng chúng ta có một model là Person
. Và chúng ta có một bản ghi Nguyễn Văn A có id là 6. Thì URL cho trang show của anh A là:
/people/6
Nhưng theo chuẩn SEO. Mình cần tên của A trong URL. Và vì thế chúng ta hãy xem xét một số cách để thực hiện việc này.
Cách tiếp cận đơn giản
Phương pháp đơn giản nhất là ghi đè phương thức to_param
ở trong model Person
. Bất cứ khi nào chúng ta gọi một đường dẫn như thế này:
person_path(@person)
Rails sẽ gọi to_param
để chuyển đối tượng đến một slug cho URL. Nếu trong model bạn không định nghĩa phương phức đó thì nó sẽ chỉ trả về id.
Cho nên là hãy cùng định nghĩa phương thức to_param
như sau:
class Person < ActiveRecord::Base
def to_param
[id, name.parameterize].join("-")
end
end
Với cách định nghĩa trên thì chúng ta sẽ tạo ra đường dẫn dạng như thế này
/people/6-nguyen-van-a
Một cách định nghĩa khác đối với các model có khóa chính là trường name
Ví dụ ta có model Tag
và ta định nghĩa hàm to_param
như sau
class Tag < ActiveRecord::Base
validates_uniqueness_of :name
def to_param
name
end
end
Và giờ khi chúng ta gọi tag_path(@tag) , chúng ta sẽ có URL như sau
/tags/ruby
Để tạo ra một Friendly URL thì vẫn còn một số cách khác. Ở phạm vi bài viết của mình chỉ mới là một số cách đơn giản và nhanh gọn.
Nguồn viết bài:
https://gist.github.com/jcasimir/1209730
http://api.rubyonrails.org/classes/ActionDispatch/Routing.html
All rights reserved