2012-08-01 14 views
7

Rails konusunda yeniyim. Özel mesajımı page_entries_info için görüntülemek istiyorum. Bağlantıyı takip ettim ama çok fazla anlayamıyorum. Herkes ayrıntılı olarak açıklayabilir.Raylarda sayfa_entries_info in will_paginate içinde özel mesajlar ver

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

+0

tam olarak ne özelleştirmek istiyorsunuz? Biraz daha açıklayabilir misin? –

+0

aslında benim için varsayılan mesaj geliyor "Toplamda 57 - Topic 1 - 5 gösteriliyor", ben bunu "Konu 57" nin 1 - 5 gösteriliyor "olarak yapmak istiyorum. Bağlantıya gittim ancak Yaml dosyasının nereye ekleneceğini anlayamıyorum. Nasıl çalışır? –

cevap

8

page_entries_info() yönteminizi ApplicationHelper numaranızda tanımlayabilir ve normalde kullandığınız gibi kullanabilirsiniz. Bu size daha fazla esneklik sağlar ve kenar durumlarını (benim durumumda olduğu gibi) örtmeniz gerekmediğini biliyorsanız daha temiz ve verimli olabilir. Orijinal yöntem tanımı here'a başvurabilir ve uygulamak için ihtiyacınız olan şeyleri görebilirsiniz. Aşağıdaki kod, probleminizin çoğu için çalışırdı!

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

Bu multi_page_html ve multi_page, son 2 girdileri değiştirmeniz gerekir 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" 

alınan, varsayılan olarak yüklenir budur. senin en.yml dosyada

(veya her neyse) böyle bir şey koymak: Eğer yml dosya hakkında zorluklar varsa

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}" 

rails i18n guide biraz ilerlemiş olsa yml dosyasını nasıl kullanılacağı hakkında güzel bilgiler verir - sadece biraz aşağı kaydırın :).

Umarım yardımcı olur.

+0

uluslararasılaştırmanın kullanılması dışında başka bir yol yoktur? –

+0

yazılımınız varsayılan olarak "uluslararasılaştırılmıştır". Bu "zor yol" değil. sadece bir deneyin ver .. –

+0

Ben raylar motorları kullanıyorum ve config içinde yerel dizin bulamıyorum. Benim için bir dizin çalışması yaratacak –