12/08/2018, 14:08

Friendly-URLs

Chúng ta thường thấy các trang web từ Rails xây dựng url dựa trên primary key-cột id từ database. Bây giờ hãy tưởng tượng chúng ta có một model Person và các associated. Chúng ta có 1 record người dùng với tên Bob Martin và có id là 6. Theo mặc định, url show record trên sẽ là / people / 6 ...

Chúng ta thường thấy các trang web từ Rails xây dựng url dựa trên primary key-cột id từ database. Bây giờ hãy tưởng tượng chúng ta có một model Person và các associated. Chúng ta có 1 record người dùng với tên Bob Martin và có id là 6. Theo mặc định, url show record trên sẽ là

/people/6

Nhưng đối với các mục đích về SEO hay thậm chí là thẩm mĩ, chúng ta sẽ muốn có tên của Bob trong url. Số 6 ở cuối url được gọi là "slug". Chúng ta hãy xem xét 1 vài cách để implement url trên tốt hơn

Simple Approach

Phương pháp đơn gianr nhất là override method to_param trong Persol model. Bất cứ khi nào cúng ta gọi route helper như sau:

person_path(@person)

Rails sẽ gọi đến method to_param để chuyển object đến 1 slug cho url. Trong model của chúng ta nếu không define 1 method to_param thì Rails sẽ mặc định sử dụng method trong ActiveRecord::Base và trả về id Để sử dụng to_param, điều quan trọng là sử dụng các đối tượng ActiveRecord thay cho id. Đừng bao giờ sử dụng:

person_path(@person.id) # Bad!

Thay vào đó, hãy sử dụng:

person_path(@person)

Slug Generation with to_param

Trong model, chúng ta có thẻ override to_param bao gồm 1 parameterized version của person's name:

class Person < ActiveRecord::Base
  def to_param
    [id, name.parameterize].join("-")
  end
end

Phương pháp trên sẽ biến bất kì 1 chuỗi nào thành kí tự hợp lệ cho url. Trong ví dụ của chúng ta, kết quả trả về sẽ là

/people/6-bob-martin

Object Lookup

Chúng ta cần làm gì để thay đổi finder của chúng ta? Không gì cả             </div>
            
            <div class=

0