2012-08-01 7 views
7

Jestem nowy na szynach. Chcę wyświetlić moją niestandardową wiadomość dla page_entries_info. Przeszedłem przez link, ale nie mogę zrozumieć wiele. Czy ktoś może wyjaśnić w szczegółach.Podawaj niestandardowe wiadomości w page_entries_info z woli_paginate w szynach

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

+0

co dokładnie chcesz dostosować? czy możesz wyjaśnić trochę więcej? –

+0

właściwie dla mnie domyślnie nadchodzi komunikat "Wyświetlanie tematu 1 - 5 z 57 w sumie", chcę zrobić to jako "Wyświetlanie 1 - 5 z 57 tematu". Przeszedłem przez link, ale nie mogę zrozumieć, gdzie dodać plik Yaml. Jak to działa? –

Odpowiedz

8

Inną opcją jest zdefiniowanie swojej metody page_entries_info() w swoim ApplicationHelper i używanie jej tak, jak zwykle. Zapewniłoby to większą elastyczność i może być nawet bardziej przejrzyste i wydajne, jeśli wiesz, że nie musisz zajmować się przypadkami skrajnymi (jak w moim przypadku). Możesz odwołać się do oryginalnej definicji metody here i zobaczyć, co trzeba zaimplementować. Poniższy kod działałby dla większości twoich problemów!

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

To co jest ładowany domyślnie pobierane z 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" 

trzeba zmienić multi_page_html i multi_page, ostatnie 2 wpisy.

w pliku en.yml (lub cokolwiek to jest) umieścić coś takiego:

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

Jeśli masz trudności o pliku yml rails i18n guide jest mało zaawansowane, ale daje piękny informacje o tym, jak korzystać z pliku yml - po prostu przewiń trochę :).

Mam nadzieję, że to pomaga.

+0

czy nie ma innego sposobu niż wykorzystanie internacjonalizacji? –

+0

Twoje oprogramowanie jest już domyślnie "internacjonalizowane". to nie jest "twarda droga". po prostu wypróbuj .. –

+0

Używam silników rails, a tam w config nie mogę znaleźć katalogu locale. Czy utworzenie katalogu pracy dla mnie –

Powiązane problemy