2010-03-08 17 views
5

Tôi có một danh sách các giá trị (Beginner, Intermediate, Advanced, Lưu loát, Native) mà tôi muốn:Tạo, cục bộ, Ruby-on-Rails danh sách-of-giá trị linh hoạt

  • đóng vai trò như mô hình cho một danh sách SELECT
  • đóng vai trò như một mô hình để chuyển đổi id để giá trị trong một bảng HTML
  • sử dụng trong nhiều bộ điều khiển và quan điểm
  • giữ trong một trật tự giữ gìn các quy tắc kinh doanh (theo yêu cầu của trình độ kỹ năng)
  • bản địa hóa tại một số điểm trong tương lai

Có cách nào để triển khai danh sách này để giải quyết tất cả hoặc hầu hết các nhu cầu của tôi không?

Trả lời

9

Bạn có thể đặt định nghĩa của một mảng trong /config/locales/some_language.yml

ví dụ bạn có thể có những điều sau đây trong en.yml

en: 
    experience_levels: 
      1: Beginner 
      2: Intermediate 
      3: Advanced 
      4: Fluent 
      4: Native 

Để có được các cặp giá trị key vào một helper, sau đây nên làm việc:

def experience_levels 
    I18n.t(:experience_levels).map { |key, value| [ value, key ] } 
end 

Để sử dụng điều này trong một hộp lựa chọn, bạn sẽ chỉ cần đặt sau trong form_for bạn

<%= f.select :experience_levels, experience_levels %> 

Nếu bạn đang sử dụng form_tag thay vào đó bạn cần như sau:

<%= select_tag :experience_levels, options_for_select(experience_levels) %> 
+0

Cảm ơn bạn, cảm ơn bạn, cảm ơn bạn. Bất kỳ suy nghĩ nào về cách tôi sẽ thêm tùy chọn 'Chọn ...' được bản địa hóa vào đầu danh sách? Có lẽ 0: Chọn ...? – craig

+0

Bạn có thể thêm phần tử "Chọn" vào mảng. Nhưng có lẽ tốt hơn là nên có một giá trị riêng biệt được thêm vào trước trong trình trợ giúp trước khi nó được chèn vào thẻ chọn. Bằng cách này bạn có thể sử dụng nó cho tất cả các thẻ lựa chọn và chỉ có một nơi mà bạn thay đổi nó. – ajmurmann

+0

ví dụ thú vị. nó làm việc cho tôi. nhưng làm thế nào tôi có thể đọc giá trị từ mảng này trong mẫu xem? ví dụ: Tôi muốn nhận được "Người mới bắt đầu" nếu tôi đã có số 1 từ db –

Các vấn đề liên quan