2017-11-30 16 views
-3

Ich möchte eine Nummer wie "42/100" gedruckt werden. Diese Formatierung sollte durch eine Funktion erfolgen, die ich in zwei verschiedenen Modellen verwenden werde. Wo sollte ich diese Methode hinzufügen?Ruby on rails Formatierungsnummer

+0

Wird es sein '/ 100' oder wird immer, dass' 100' Änderung der Anzahl basiert (und wenn ja, wie)? –

+1

Warum ist es "/ 100"? –

+1

Was ist user_database.rb? –

Antwort

0

Okay, laut der begrenzten Beschreibung, hier ist das, was ich vorschlagen:

formatting_helper.rb

module FormattingHelper 
    MAXIMUM_VALUE = 100.freeze # Change it here. 

    def self.divide_by_maximum_value(str) 
    "#{str}/#{MAXIMUM_VALUE}" 
    end 
end 

Und dann werden Sie in der Lage sein FormattingHelper.divide_by_maximum_value von überall zu anrufen. z.B.

FormattingHelper.divide_by_maximum_value('42') 
=> "42/100" 
+0

Sorry, wenn dies eine sehr dumme Frage ist, aber wie neu ich weiß nicht, wie es geht und kannst du mir bitte sagen, was passiert, wenn ich diese Methoden in application_helper definiere. –

+0

ApplicationHelper-Methoden sind in Ihren Ansichten verfügbar. Aber anscheinend müssen Sie sie in Ihrem Modell und in einem Dienst user_database.rb aufrufen. Also müssen Sie hier einen separaten Mix definieren. Irgendwo unter /app/mixins/formatting_helper.rb. –

+0

In diesem Fall könnte ich auch "A" über 100 setzen, was seltsam erscheint. Vielleicht stattdessen die Klasse "Rational" (http://ruby-doc.org/core-2.0/Rational.html)? z.B. 'Rational.new (str, MAXIMUM_VALUE) .to_s' – engineersmnky

0

Wenn Sie eine Nummer Prozentsatz erstellen möchten Sie number helper von Ruby on Rails offiziellen Guide

number_to_percentage(42)           
    # => 42.000% 

mit Ausnahme derjenigen Führer verwenden können, sollten Sie erstellen Modul wie jagdeep singth sagte. oder Lambda schaffen

num_formatter = ->(x,y='100') { x.to_s+"/#{y}" } 
    num_formatter.call(42) 
    # => "42/100" 
+0

" 100 "wird sich voraussichtlich in Zukunft ändern. –