2015-04-07 1 views
1

J'essaie d'utiliser react-rails avec jbuilder. Par exemple, j'utilise this great sample app of react-rails et essaie de réécrire pour utiliser jbuilder comme réponse json en utilisant la référence de this part dans react-rails.réagir-rails avec jbuilder ne fonctionne pas

Ce sont les principales parties de ré-écriture:

# app/views/comments/index.html.erb 
<%= react_component 'CommentBox', render(template: 'comments/index.json.jbuilder'), {prerender: true} %> 
# app/views/comments/index.json.jbuilder 
json.presenter do 
    json.comments(@comments) do |comment| 
    json.extract! comment, :id, :author 
    end 
    json.form do 
    json.action comments_path 
    json.csrf_param request_forgery_protection_token 
    json.csrf_token form_authenticity_token 
    end 
end 
json.imgSrc image_path("gundam.jpg") 

Mais je suis une erreur suivante:

Started GET "/comments" for 127.0.0.1 at 2015-04-07 18:26:40 +0900 
Processing by CommentsController#index as HTML 
    Comment Load (0.9ms) SELECT "comments".* FROM "comments" ORDER BY "comments"."id" DESC LIMIT 5 
    Rendered comments/index.json.jbuilder (8.4ms) 
    Rendered comments/index.html.erb within layouts/application (34.6ms) 
Completed 500 Internal Server Error in 43ms 

ActionView::Template::Error (SyntaxError: Unexpected token o): 
    app/views/comments/index.html.erb:3:in `_app_views_comments_index_html_erb___3472795088323540071_7' 

Avez-vous une idée pour résoudre cette erreur? Merci d'avance.

voir le code source complet: Use jbuilder but it gets an error · jwako/[email protected]

Répondre

2

Il semble que le jeton inattendu est élevé parce que le composant CommentBox appelle JSON.parse() in getInitialState quand this.props.presenter est déjà un objet JSON.

Vous pouvez le résoudre en supprimant JSON.parse() dans getInitialState et en renvoyant uniquement this.props.presenter.

Voici un answer associé sur l'analyse des objets JSON existants.

+0

Merci. ça fonctionne bien ! – jwako