2013-01-15 39 views
1

在Ruby on Rails的3,是使用权的Ruby on Rails3中 ':' VS '=>'

validates :name, presence: true, length: { maximum: 50 } 

代替

validates :name, presence: true, :length => { maximum: 50 } 

在第一种情况下,即使代码工作,Aptana3仍然说是错误的,我必须要改变,以第二种方法是退出说,错误是存在的。

为什么?

的Rails 3.2.10 红宝石1.9.3p362(2012-12-25修订38607)x86_64的-darwin12.2.1]

+0

新语法只能用一个符号,或许是这个问题的一部分散列时。 –

+0

@MichaelDurrant所有这些键都是符号。 –

回答

1

你的IDE认为是正确的可能比实际上是正确的不同。

的IntelliJ,例如,需要设置Ruby语言水平得到新的哈希语法。

+0

这是正确的。新的哈希语法显然在Aptana中有一个错误(或者至少有错误)。见以下论坛帖子:http://aptanastudio.tenderapp.com/discussions/suggestions/303-ruby-syntax-highlightingerror-indication –

+0

@mbaumbach有趣的;太糟糕了,它是一岁,并在该网页上的问题的链接被打破:(*叹* *啊,互联网。 –

1

它无关,与Rails的我想,一切都与你的Ruby版本。

你可能需要的Aptana配置使用Ruby 1.9。但是奇怪的是,你还使用第二版本(presence: true)新语法,那么问题可能是别的地方...

但问题是,第一个版本是你应该用什么。

+0

我怀疑“错误”会是一个简单的问题(因为解析Ruby很简单)解析值类型的问题。 –

0

一两件事:它无关的Aptana。但它不应该给出这个警告/错误。 Yoy可能已经安装了多个版本的ruby。确保Aptana使用ruby> = 1.9。

要列出安装在系统上的所有Ruby版本:

ruby -v 

rvm list (if used rvm to install rubies) 

红宝石1.9之前,哈希被声明如:

:key => "value" 

从1.9开始,以减少输入负载,这种速记已经提供:

key: "value" 

但是,使用rails时,我发现了一些我像rregularities:

validates :some_attr, presence: true, :if => { block } # this works 

但这并不:

validates :some_attr, presence: true, if: { block } # this DOES NOT works 

同样是拉姆达的情况下,PROC等,基本上在以往任何时候,我们需要指定一个块。