2017-05-16 1 views
0

Ich benutze Schienen 5.1 mit dem react-rails gem.React Rails: Objekte sind nicht als reagierendes Kind gültig

Mein Modell hat eine „start_time“ Spalte, die den „Tod“ (Tageszeit gem) verwendet, so ist es in meinem Modell wie folgt serialisiert:

serialize :start_time, Tod::TimeOfDay 

ich in dieser Zeit zu analysieren, müssen meine Reagieren Sie Ansicht, aber ich verstehe nicht, wie das resultierende Objekt gerendert wird.

console.log(@props.booking.start_time) #=> Object {hour: 10, minute: 15, second: 0, second_of_day: 36900} 

Wenn ich versuche, es in einer Ansicht zu machen bekomme ich diesen Fehler:

Uncaught Error: Objects are not valid as a React child (found: object with keys {hour, minute, second, second_of_day}). If you meant to render a collection of children, use an array instead or wrap the object using createFragment(object) from the React add-ons. 

Soll ich das Attribut im Modell analysiert vor dem Senden zu reagieren, oder es gibt eine reagieren Weise zu analysieren (und formatieren) das Array?

EDIT: hinzugefügt, um die Ansicht Code

@Booking = React.createClass 
    render: -> 
    React.DOM.tr null, 
     React.DOM.td null, @props.booking.start_time 
+0

kann den Code, wo Sie Renderzeit in Sicht veröffentlichen? @TopperH –

+0

@NarasimhaReddy, ja, sicher, gerade aktualisiert meine Frage mit dem View-Code – TopperH

+0

Hier 'React.DOM.td null, @ props.booking.start_time' übergeben Sie einen Hash der Werte an DOM, aber Sie sollten nicht. Erstellen Sie eine Sentense, die Sie in 'td' von' @ props.booking.start_time' anzeigen möchten und übergeben Sie diese Sentense dort. es wird klappen. wie 'React.DOM.td null, timeToDisplay'. –

Antwort

1
let time = @props.booking.start_time 
let timeToDisplay = time["hour"] + ":" + time["minute"] + ":" + time["second"] 


es so tun und diesen Wert zu td passieren. Ich denke, es funktioniert.

React.DOM.td null, timeToDisplay 
+0

Großartig, danke. Wie würdest du es mit einem Null-Feld "start_time" umgehen lassen? – TopperH

+1

@TopperH es ist besser, es in der hinteren Endseite anstatt in den Ansichten zu behandeln. –

Verwandte Themen