2012-08-01 16 views
7

Tôi mới làm quen với đường ray. Tôi muốn hiển thị thông báo tùy chỉnh của mình cho page_entries_info. Tôi đã đi qua liên kết sau nhưng không thể hiểu được nhiều. Bất cứ ai có thể vui lòng giải thích chi tiết.Cung cấp thông báo tùy chỉnh trong page_entries_info của will_paginate trong đường ray

how-do-i-specify-custom-wording-in-a-will-paginate-view-helper

+0

chính xác bạn muốn tùy chỉnh gì? bạn có thể giải thích thêm một chút không? –

+0

thực sự cho tôi thông báo mặc định sắp tới là "Hiển thị chủ đề 1 - 5 trong tổng số 57", tôi muốn làm cho nó là "Hiển thị 1 - 5 của 57 chủ đề". Tôi đã đi qua liên kết nhưng không thể hiểu nơi để thêm tập tin Yaml. Làm thế nào nó hoạt động? –

Trả lời

8

Một tùy chọn khác là bạn có thể xác định phương thức page_entries_info() trong ApplicationHelper và sử dụng tùy chọn như bình thường. Điều này sẽ cung cấp cho bạn sự linh hoạt hơn và thậm chí có thể sạch hơn và hiệu quả hơn nếu bạn biết rằng bạn không cần phải bao gồm các trường hợp cạnh (như trong trường hợp của tôi). Bạn có thể tham khảo định nghĩa phương thức gốc here và xem tất cả những gì bạn cần để triển khai. Mã sau sẽ chạy cho hầu hết các vấn đề của bạn!

def page_entries_info(collection, options = {}) 
    entry_name = options[:entry_name] || (collection.empty?? 'item' : 
     collection.first.class.name.split('::').last.titleize) 
    if collection.total_pages < 2 
    case collection.size 
    when 0; "No #{entry_name.pluralize} found" 
    else; "Displaying all #{entry_name.pluralize}" 
    end 
    else 
    %{Displaying %d - %d of %d #{entry_name.pluralize}} % [ 
     collection.offset + 1, 
     collection.offset + collection.length, 
     collection.total_entries 
    ] 
    end 
end 
8

Đây là những gì được nạp theo mặc định, lấy từ project wiki

en: 
    will_paginate: 
    page_entries_info: 
     single_page: 
     zero: "No %{model} found" 
     one: "Displaying 1 %{model}" 
     other: "Displaying all %{count} %{model}" 
     single_page_html: 
     zero: "No %{model} found" 
     one: "Displaying <b>1</b> %{model}" 
     other: "Displaying <b>all&nbsp;%{count}</b> %{model}" 

     multi_page: "Displaying %{model} %{from} - %{to} of %{count} in total" 
     multi_page_html: "Displaying %{model} <b>%{from}&nbsp;-&nbsp;%{to}</b> of <b>%{count}</b> in total" 

bạn cần thay đổi multi_page_htmlmulti_page, 2 mục cuối cùng.

trong tập tin en.yml của bạn (hoặc bất cứ điều gì) đặt một cái gì đó như thế này:

en: 
    will_paginate: 
    line_item: 
     page_entries_info: 
     multi_page: "Displaying %{from} - %{to} of %{count} of %{model}"   
     multi_page_html: "Displaying <b>%{from}&nbsp;-&nbsp;%{to}</b> of <b>%{count}</b> of %{model}" 

Nếu bạn gặp khó khăn về tập tin yml rails i18n guide là một chút cao nhưng cung cấp thông tin tốt đẹp về làm thế nào để sử dụng tập tin yml - chỉ cuộn xuống một chút :).

Tôi hy vọng điều đó sẽ hữu ích.

+0

là không có cách nào khác ngoài việc sử dụng quốc tế? –

+0

phần mềm của bạn đã được "quốc tế hóa" theo mặc định. đây không phải là "cách cứng". chỉ cần cung cấp cho nó một thử .. –

+0

Tôi đang sử dụng động cơ đường ray, và có trong cấu hình tôi không thể tìm thấy thư mục locale. Sẽ tạo một thư mục làm việc cho tôi –