Computer >> Máy Tính >  >> Lập trình >> Ruby

Cách sử dụng Rails Helpers (Hướng dẫn đầy đủ)

Người trợ giúp trong Rails là gì?

Trình trợ giúp là một phương thức (hầu hết) được sử dụng trong các dạng xem Rails của bạn để chia sẻ mã có thể sử dụng lại. Rails đi kèm với một tập hợp các phương thức trợ giúp được tích hợp sẵn.

Một trong những trình trợ giúp tích hợp này là time_ago_in_words .

Đây là một ví dụ :

time_ago_in_words(Time.now)
# "less than a minute"

time_ago_in_words(Time.now + 60)
# "1 minute"

time_ago_in_words(Time.now + 600)
# "10 minutes"

Phương pháp này hữu ích bất cứ khi nào bạn muốn hiển thị thời gian ở định dạng cụ thể này.

Một trình trợ giúp chế độ xem Rails khác là number_to_human .

Ví dụ :

number_to_human(10_000)
# "10 Thousand"

Điều này thật tuyệt khi bạn muốn lấy một con số và in nó như khi bạn đọc nó, điều này làm cho nó có cảm giác giống con người hơn.

Bạn có thể tìm thêm người trợ giúp trong tài liệu Ruby on Rails.

Nhưng bạn có biết rằng bạn có thể tự viết không?

Viết phương pháp trợ giúp của riêng bạn

Nếu bạn đang tìm cách viết các phương thức trợ giúp tùy chỉnh, đường dẫn thư mục chính xác là app/helpers .

Bạn viết trình trợ giúp của mình bên trong mô-đun trình trợ giúp .

Theo mặc định, mọi ứng dụng Rails đều đi kèm với một mô-đun trợ giúp cơ sở, nó được gọi là ApplicationHelper .

Đây là nơi bạn có thể thêm các phương thức trợ giúp của mình.

Các phương pháp này sẽ tự động có sẵn cho tất cả các chế độ xem của bạn. Sau đó, bạn sẽ học cách sử dụng chúng trong bộ điều khiển và tại sao đó có thể là một ý tưởng tồi.

Bạn có thể viết tất cả các trình trợ giúp của mình trong ApplicationHelper .

Nhưng có một tùy chọn khác…

Bạn có thể tạo mô-đun trợ giúp để có thể tổ chức các phương pháp của mình tốt hơn.

Hướng dẫn :

  • Tạo một tệp mới trong app/helpers
  • Đặt tên nó giống như user_helper.rb
  • Thêm một mô-đun mới phù hợp với tên tệp

Ví dụ :

# app/helpers/user_helper.rb

module UserHelper
  def format_name(user)
    if user.gender == "M"
      "Mr. #{user.name}"
    else
      "Ms. #{user.name}"
    end
  end
end

Mã này có thể được sử dụng để xưng hô với một người theo cách chính thức dựa trên giới tính của họ.

Lợi ích chính?

Bạn không phải lặp lại logic này trong các chế độ xem khác khi bạn cần và khi bạn cần thay đổi mã… nó chỉ phải thay đổi ở một nơi.

Rất tốt!

Sử dụng Mô-đun trợ giúp mới của bạn

Bạn có thể sử dụng các phương pháp trợ giúp trong chế độ xem của mình.

Như thế này :

<%= format_name(@user) %>

Dễ dàng, phải không?

Nếu bạn muốn sử dụng người trợ giúp ngoài chế độ xem, bạn sẽ cần một thứ khác.

Cách sử dụng công cụ trợ giúp từ bộ điều khiển

Có thể, mặc dù không phổ biến, sử dụng các phương thức trợ giúp từ các hành động của bộ điều khiển.

Trước Rails 5, bạn phải bao gồm mô-đun trợ giúp.

Trong các phiên bản mới hơn, bạn có thể sử dụng trình trợ giúp trong bộ điều khiển của mình với helpers (số nhiều) đối tượng.

Như thế này :

class UsersController
  def index
    helpers.time_ago_in_words(Time.now)
  end
end

Bằng cách này, bạn có thể sử dụng trình trợ giúp từ bộ điều khiển của mình. Nhưng hãy suy nghĩ kỹ trước khi thực hiện việc này vì nó có thể là vấn đề về thiết kế.

Thay vào đó, hãy cân nhắc sử dụng một đối tượng Ruby thuần túy.

Vui vẻ với Rails Console

Tôi thích sử dụng bảng điều khiển Rails (đã tải ứng dụng Rails của bạn) để thử các phương pháp và chơi với mọi thứ.

Đã bao gồm trợ giúp!

Bạn có thể sử dụng trình trợ giúp từ bảng điều khiển với helper.method_name .

Lưu ý dạng số ít của “helper” để bạn không nhận được thông báo lỗi. Và hãy nhớ rằng bảng điều khiển không tự động tải lại các thay đổi mã.

Các phương pháp hay nhất để viết Rails View Helpers

Khi nào bạn nên tạo một phương thức trợ giúp?

Bất cứ khi nào bạn có logic tạo ra các bit HTML.

Thông thường, điều này thuộc một trong hai danh mục, một là định dạng chuỗi và danh mục kia là các phần tử trang có điều kiện.

Một mẹo khác…

Nếu bạn muốn viết những người trợ giúp tốt không sử dụng bất kỳ biến phiên bản nào, chúng có thể có sẵn trong chế độ xem hiện tại của bạn, nhưng chúng có thể không có trong chế độ xem khác.

Điều đó sẽ dẫn đến lỗi vì thiếu biến.

Giải pháp?

Sử dụng các tham số, vì vậy bất kỳ dữ liệu nào mà phương pháp của bạn cần phải rõ ràng và rõ ràng .

# wrong way

def eat_healthy
  @fruit.eat
end

# do this instead

def eat_healthy(fruit)
  fruit.eat
end

Mẹo cuối cùng của tôi là chia trình trợ giúp của bạn thành các mô-đun, trong đó mỗi tên mô-đun mô tả rõ ràng loại phương thức mà nó chứa.

Tuy nhiên :

Điều này sẽ không hữu ích với các tên phương thức trùng lặp, điều này có thể dẫn đến lỗi và nhầm lẫn.

Tất cả những người trợ giúp của bạn phải có tên riêng .

Thay vào đó, hãy thử sử dụng các đối tượng người thuyết trình, như được giải thích trong hướng dẫn này.

Tóm tắt

Bạn đã tìm hiểu về những người trợ giúp trong Rails! Một tập hợp các phương pháp tiện ích mà bạn có thể sử dụng để định dạng và xử lý logic phức tạp trong dạng xem của mình.

Bây giờ đã đến lúc tạo người trợ giúp của riêng bạn.

Cảm ơn vì đã đọc 🙂