2012-08-01 4 views
7

Ich bin neu auf Schienen. Ich möchte meine benutzerdefinierte Nachricht für page_entries_info anzeigen. Ich bin durch folgenden Link gegangen, kann aber nicht viel verstehen. Kann mir bitte jemand im Detail erklären.Geben Sie benutzerdefinierte Nachrichten in page_entries_info von will_paginate in Schienen

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

+0

was genau möchten Sie anpassen? Kannst du etwas mehr erklären? –

+0

eigentlich für mich Standard-Nachricht kommt "Anzeige Thema 1 - 5 von 57 insgesamt", ich möchte es als "Anzeige 1 - 5 von 57 of Topic". Ich bin durch den Link gegangen, kann aber nicht verstehen, wo ich die Yaml-Datei hinzufügen soll. Wie es funktioniert? –

Antwort

8

Eine weitere Option ist, dass Sie Ihre page_entries_info() Methode in Ihrer ApplicationHelper definieren und verwenden können, wie Sie es normalerweise tun würde. Dies gibt Ihnen mehr Flexibilität und kann sogar noch sauberer und effizienter sein, wenn Sie wissen, dass Sie die Randfälle nicht abdecken müssen (wie in meinem Fall). Sie können die ursprüngliche Methodendefinition here beziehen und sehen, was Sie alles implementieren müssen. Der folgende Code würde für den größten Teil Ihres Problems laufen!

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

Dies ist, was standardmäßig von 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" 

Sie multi_page_html und multi_page, die letzten zwei Einträge ändern müssen geladen wird, genommen.

in Ihrer en.yml Datei (oder was auch immer es ist) setzen etwas wie folgt aus:

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

Wenn Sie Schwierigkeiten über yml Datei ist rails i18n guide ein wenig fortgeschritten, aber gibt nette Informationen darüber, wie yml-Datei verwenden - nur Scrolle ein wenig nach unten :).

Ich hoffe, es hilft.

+0

gibt es keinen anderen Weg als die Internationalisierung? –

+0

Ihre Software ist standardmäßig bereits "internationalisiert". Das ist nicht der "harte Weg". Probieren Sie es einfach aus .. –

+0

Ich benutze Rails-Engines, und dort in Config kann ich nicht Locale-Verzeichnis finden. Wird ein Verzeichnis für mich arbeiten –

Verwandte Themen