Dùng gem friendly_id để tạo url đẹp trong Ruby on Rails
RubyOnRails
39
Rails
30
Male avatar

Yuto Yasunaga viết ngày 23/05/2015

Trang web demo

Thông thường, Rails sẽ mặc định tạo url cho các record theo dạng id, cụ thể là /articles/1, /articles/1/edit. Trong bài viết này mình sẽ cùng tìm hiểu về cách tạo một url dễ đọc, ví dụ như là /articles/bai-viet-so-1, /users/yuto-yasunaga.

OPTIONAL: Tạo môi trường Bootstrap nhanh cho trang web Ruby on Rails

Chúng ta bắt đầu vào việc tạo trang web

Gemfile

gem 'friendly_id'

Tạo scaffold Article: rails g scaffold Article title content:text

Thêm slug vào cơ sở dữ liệu Article: rails g migration add_slug_to_articles slug

Migrate cơ sở dữ liệu: rake db:migrate

Nếu trước đó bạn đã có dữ liệu trong model Article rồi thì làm thêm bước sau:

rails c

Article.find_each(&:save)

Tiếp theo chúng ta sẽ dùng friendly_id để lấy tiêu đề bài viết làm url

app/models/article.rb

extend FriendlyId
friendly_id :title, use: [:slugged, :finders]

Trong trường hợp bạn muốn url phải thay đổi khi chúng ta update tiêu đề (title) của một bài viết:

private

def should_generate_new_friendly_id?
  slug.blank? || title_changed?
end

Giải thích:

Nếu dùng use: :finders, thì khi truy vấn dữ liệu, chúng ta vẫn làm như bình thường:

@article = Article.find(params[:id])

Nếu không dùng use: :finders, thì khi truy vấn dữ liệu, chúng ta phải làm như sau:

@article = Article.friendly.find(params[:id])

Lưu ý: url sẽ không được như ý muốn nếu ngôn ngữ viết là tiếng Việt, tiếng Nhật..v.v..

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

Male avatar

Yuto Yasunaga

4 bài viết.
1 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
Male avatar
5 0
(Link) Bài viết này mình sẽ hướng dẫn các bạn tạo nhanh môi trường Bootstrap cho trang web Ruby on Rails. Gemfile gem 'bootstrapsass' group :...
Yuto Yasunaga viết hơn 2 năm trước
5 0
Male avatar
2 0
Trong bài này mình sẽ hướng dẫn các bạn cài đặt Ruby và Rails trên Mac OS (Ảnh) Cài đặt Homebrew Đầu tiên chúng ta cần phải cài đặt Homebrew. H...
Yuto Yasunaga viết hơn 2 năm trước
2 0
Male avatar
1 4
Thông thường khi mới làm quen với Rails thì chúng ta vẫn dùng template engine mặc định là .html.erb để viết. Hôm nay mình giới thiệu cho những bạn ...
Yuto Yasunaga viết hơn 2 năm trước
1 4
Bài viết liên quan
White
8 1
Tiếp theo (Link) Mình sẽ hướng dẫn cách test căn bản cho API mình tạo. Thật ra mà nói thì mình phải viết test trước khi làm nhưng mà để tránh việc...
My Mai viết hơn 2 năm trước
8 1
White
7 4
Nếu ai đã làm Rails thì không còn lạ lẫm gì với chức năng Migration của Rails. Nếu ai chưa biết thì tôi xin giới thiệu sơ qua chức năng này. Rails ...
Lơi Rệ viết gần 3 năm trước
7 4
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


Male avatar
{{userFollowed ? 'Following' : 'Follow'}}
4 bài viết.
1 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!