Helpex - Trao đổi & giúp đỡ Đăng nhập
17

Có người trợ giúp nào để tránh loại mã này không?

= @leads.length == 1 ? 'is' : 'are'

Tôi biết về đa phương hóa nhưng nó không giúp được gì trong trường hợp này. Tôi biết rằng việc viết một helper sẽ rất đơn giản, tôi muốn biết liệu có điều gì đó trong API Rails mà tôi đã bỏ qua hay không.

Cảm ơn,

-Tim

17 hữu ích 1 bình luận 4.7k xem chia sẻ
20

Như t6d đã nói, bạn cần thêm is / are vào bộ suy luận Rails. Chỉ là mã từ td6, nhưng bạn cần thêm không gian tên ActiveSupport:

ActiveSupport::Inflector.inflections do |inflection|
  inflection.irregular "is", "are"
end

Giờ đây, trình trợ giúp mà Rails đã tích hợp sẵn là đa phân hóa, nhưng ở chế độ xem sẽ không làm được những gì bạn muốn. Ví dụ:

pluralize(@leads.length,'is')

đầu ra (cho 2 chuyển đạo)

2 are

Đối với những gì bạn muốn, bạn cần tạo trình trợ giúp của riêng bạn sẽ đa dạng hóa từ, nhưng không xuất ra số lượng. Vì vậy, nếu bạn dựa trên các đường ray hiện tại đa nguyên:

def pluralize_no_count(count, singular, plural = nil)
  ((count == 1 || count == '1') ? singular : (plural || singular.pluralize))
end
20 hữu ích 2 bình luận chia sẻ
4

Kết luận, tôi sẽ đi cho:

Cấu hình

# inflections.rb
Inflector.inflections do |inflection|
  inflection.irregular "is", "are"
  inflection.irregular "has", "have"
end

Đường ray 3

"#{subject} #{'is'.pluralize(count)} working!"

Đường ray 2

# application_helper.rb
def signularize_or_pluralize(word, count)
  if count.to_i == 1
    word.singularize
  else
    word.pluralize
  end
end

# in the view view
"#{subject} #{signularize_or_pluralize('is', count)} working!"
4 hữu ích 0 bình luận chia sẻ
3

Có lẽ bạn có thể sử dụng đa phương hóa và thêm một đoạn uốn cong cho 'is'

Inflector.inflections do |inflection|
  inflection.irregular "is", "are"
end

vậy nên

'is'.pluralize # => 'are'

(Tôi đã không thử nghiệm giải pháp, nhưng nó sẽ hoạt động.)

3 hữu ích 0 bình luận chia sẻ
1

Một tùy chọn khác là sử dụng thư viện dịch i18n đi kèm với đường ray.

Điều này cho phép bạn xác định một từ hoặc câu (với phép nội suy) với cả phiên bản số ít và số nhiều.

Mặc dù nó có vẻ phức tạp quá mức, nhưng tôi thực sự khuyên bạn nên sử dụng i18n cho mọi dự án ngay từ đầu vì nó không chỉ là nơi hợp lý cho các lỗi ghi hoạt động mà còn giúp ứng dụng của bạn sẵn sàng triển khai bằng một ngôn ngữ khác khá dễ dàng.

Nó cũng cung cấp nhiều tiện ích bổ sung và lợi ích với bản địa hóa ngày và giờ. Đọc về i18n từ trong ra ngoài tại đây

1 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ ruby-on-rails , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading