2016-07-29 6 views
1

Ich benutze time_zone_select, um Benutzer Zeitzonen zu speichern.Wie wird der Zeitzonen-Offset in Ruby on Rails angezeigt?

  <div class="row"> 
      <div class="panel panel-primary"> 

       <div class="panel-heading"> 
       <%= f.label :time_zone, "TimeZone*" %> 
       </div> 

       <div class="panel-body"> 
       <%= f.time_zone_select :time_zone, nil, {}, { :class => 'form-control' } %> 
       </div> 
      </div> 
      </div> 

Die Zeitzonen der Benutzer werden erfolgreich in einer Zeichenfolge gespeichert.

>> userp.time_zone 
=> "Chennai" 

Nun, wenn ich den Benutzer Zeitzone angezeigt werden soll ich die Zeitzone wie diese

(GMT+05:30) Chennai 

Dies ist Ansichtsvorlage Offset angezeigt werden, aber ich bin nicht in der Lage die Zeitzone zu manipulieren, da es als String gespeichert ist.

 <div> 
     <small> 
     <i class="fa fa-clock-o" aria-hidden="true"></i> 
     <span style="padding-left:1px">TimeZone:</span>    
     <%= @user.time_zone %> 
     </small> 
     </div> 

Kann mir jemand zeigen, wie man Zeitzone mit Offset anzeigt?

Antwort

2

Sie ActiveSupport::TimeZone als Array mit ActiveSupport::TimeZone[named_zone] behandeln, zB:

<div> 
    <small> 
    <i class="fa fa-clock-o" aria-hidden="true"></i> 
    <span style="padding-left:1px">TimeZone:</span>    
    <%= ActiveSupport::TimeZone[@user.time_zone].to_s %> <%= @user.time_zone %> 
    </small> 
    </div> 

Sie es in Rails-Konsole testen können:

[6] pry(main)> ActiveSupport::TimeZone["Chennai"].to_s 
=> "(GMT+05:30) Chennai" 

Bitte nehmen Sie zur Kenntnis, dass, wenn Sie nicht #to_s verwenden Sie , erhalten Sie das Objekt TimeZone, was nicht das ist, was Sie wollen. Sie können detailed implementation on Github sehen.

Leicht verwandt, Wenn Sie sich fragen, warum dieses Modul als ein Array behandelt werden kann, ist es, weil es die []() Methode implementiert.

+0

Vielen Dank. Klappt wunderbar. Perfekt. Ich entfernte to_s und nachdem ich die Antwort vollständig gelesen hatte, legte ich sie wieder rein. Perfekte vollständige Antwort. – LovingRails