2011-09-30 4 views
4

나는 한동안 윈도우에서 레일을 사용 해왔고 최근에 리눅스에서 사용하기로 결정했다. 그래서 내가 모든 설정을했는데, 지금은 윈도우에서 생성 한 프로젝트가 우분투에서 제대로 실행되지 않습니다 :레일스 문법 "render json : @products"

/home/dcastro/workspace/teste/app/controllers/products_controller.rb:9: syntax error, unexpected ':', expecting '}' 
    format.json { render json: @products } 
          ^
/home/dcastro/workspace/teste/app/controllers/products_controller.rb:20: syntax error, unexpected ':', expecting '}' 
    format.json { render json: @product } 
: 다음과 같은 오류를 생산

render json: @products 

: 다음과 같은 구문을 해석 할 실패

그리고 내가 그것을 변경하는 경우에만 작동 : 나는 루비의 이전 버전을 사용하고 있기 때문에 알았는데 처음에는

render :json => @products 

(즉, 1.8.7). 그래서 1.9.2p290을 설치했지만 작동하지 않았습니다.

중요하다면 레일즈 3.1.0과 우분투 11.04를 사용하고 있습니다.

이 문제의 원인을 아는 사람이 있습니까? 어떻게 해결할 수 있습니까? 미리 감사드립니다!

+0

이전 구문'render : json => @ products'을 사용해 보셨습니까? – Bohdan

+0

나는 그랬고 나는 그걸 내 글에서 지적했다. – dcastro

+1

나는 무엇이 잘못되었는지 알아 냈습니다. 1.9.2를 설치 했더라도 서버는 1.8에서 실행되었습니다. 그래서 나는 ruby1.8을 제거하고 "ruby1.8"이라는 이름의 ruby1.9.2에 대한 심볼릭 링크를 만들었고 서버를 속여서 1.9.2로 돌렸다. – dcastro

답변

1

다음이 맞습니다! 당신이 설정 당신이 해시에 배치 무엇이든 제품 모델에 as_json 클래스 방법은 당신의 JSON 엔드 포인트에서 응답에 포함됩니다

render :json => @products 

.

공식 3.1 레일 가이드에 따라 this is the correct syntax.

2

{ foo: 'bar' }은 새로운 해시 리터럴 구문으로, Ruby 1.9 (어떤 릴리스인지 확실하지 않음)에서 소개되었습니다. 그래서, 내 시스템에서는 Ruby 1.9.2p290을 사용해야합니다.