Giới thiệu về Friendly URLs
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ó ...
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