Синтаксис рельсов "render json: @products" - PullRequest
4 голосов
/ 30 сентября 2011

Я использую rails в Windows в течение некоторого времени, и я решил попробовать это на Linux. Итак, я все настраивал, но теперь проект, который я создал для Windows, не работает должным образом в Ubuntu: он не может использовать следующий синтаксис:

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

Сначала я подумал, что это потому, что я использовал более старую версию ruby ​​(а именно 1.8.7). Поэтому я установил 1.9.2p290, но это не сработало.

Если это имеет значение, я использую rails 3.1.0 и ubuntu 11.04.

Кто-нибудь знает, что вызывает это? И как я могу это исправить? Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

{ foo: 'bar' } - это новый синтаксис хеш-литерала, представленный в Ruby 1.9 (не уверен, какой выпуск). Таким образом, он должен (и работает в моей системе) работать с Ruby 1.9.2p290.

1 голос
/ 30 сентября 2011

Следующее верно!

render :json => @products

Если вы настроили метод класса as_json в своей модели продукта, все, что вы поместите в этот хеш, будет включено в ответ на вашей конечной точке JSON.

Согласно официальному руководству по рельсам 3.1, это правильный синтаксис .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...