rails语法“render json:@products”

时间:2011-09-30 14:27:52

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我已经在Windows中使用rails一段时间了,我决定最近在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

起初我以为是因为我使用的是旧版本的红宝石(即1.8.7)。所以我安装了1.9.2p290,但是没有用。

如果重要,我正在使用rails 3.1.0和ubuntu 11.04。

有谁知道造成这种情况的原因是什么?我该如何解决?提前谢谢!

2 个答案:

答案 0 :(得分:2)

{ foo: 'bar' }是Ruby 1.9中引入的新哈希文字语法(不确定哪个版本)。因此,它应该(并且在我的系统上)与Ruby 1.9.2p290一起使用。

答案 1 :(得分:1)

以下是正确的!

render :json => @products

如果您在产品型号中设置了as_json类方法,那么您在该哈希中的任何内容都将包含在JSON端点的响应中。

根据官方3.1导轨指南,this is the correct syntax