2015-04-07 3 views
1

Я пытаюсь использовать react-rails с jbuilder. Например, я использую this great sample app of react-rails и попробую переписать для использования jbuilder как ответ json, используя ссылку от this part в react-rails.Реактивные рельсы с jbuilder не работают

Это основные части: переписать

# 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") 

Но я получил следующее сообщение об ошибке:

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' 

Есть ли у вас какие-либо идеи, чтобы решить эту ошибку? Спасибо заранее.

см полный исходный код: Use jbuilder but it gets an error · jwako/[email protected]

ответ

2

Похоже, неожиданный маркер возникает, так как компонент CommentBox звонит JSON.parse() in getInitialState когда this.props.presenter уже объект JSON.

Вы можете исправить это, удалив JSON.parse() в getInitialState и возвращаясь только this.props.presenter.

. Связанный answer по разбору существующих объектов JSON.

+0

Спасибо. он отлично работает! – jwako