Ruby on rails 3 Ruby on Rails3';:';vs'=&燃气轮机';
在RubyonRails3中,正确使用Ruby on rails 3 Ruby on Rails3';:';vs'=&燃气轮机';,ruby-on-rails-3,aptana,Ruby On Rails 3,Aptana,在RubyonRails3中,正确使用 validates :name, presence: true, length: { maximum: 50 } 反而 validates :name, presence: true, :length => { maximum: 50 } ? 在第一种情况下,即使代码正常工作,Aptana3仍然表示存在错误,我必须更改为第二种方法,以使其退出,并表示存在错误 为什么? 轨道3.2.10 ruby 1.9.3p362(2012-12-25修订版
validates :name, presence: true, length: { maximum: 50 }
反而
validates :name, presence: true, :length => { maximum: 50 }
?
在第一种情况下,即使代码正常工作,Aptana3仍然表示存在错误,我必须更改为第二种方法,以使其退出,并表示存在错误
为什么?
轨道3.2.10
ruby 1.9.3p362(2012-12-25修订版38607)[x86_64-darwin12.2.1]IDE认为正确的可能与实际正确的不同
例如,IntelliJ需要设置Ruby语言级别以获得新的哈希语法。我认为这与Rails无关,而与您的Ruby版本有关 您可能需要配置Aptana以使用ruby 1.9。但奇怪的是,您在第二个版本中也使用了新语法(
presence:true
),因此问题可能在其他地方
但问题是,第一个版本是您应该使用的。一件事:它与Aptana无关。但它不应该给出警告/错误。 Yoy可能安装了多个版本的ruby。确保Aptana使用的是ruby>=1.9 要列出系统上安装的所有ruby版本,请执行以下操作:
ruby -v
rvm list (if used rvm to install rubies)
在ruby 1.9之前,哈希声明如下:
:key => "value"
从1.9版开始,为减少打字量,该速记已提供:
key: "value"
但是,在使用rails时,我发现了一些不规则情况,如:
validates :some_attr, presence: true, :if => { block } # this works
但这并不是:
validates :some_attr, presence: true, if: { block } # this DOES NOT works
lambda、Proc等的情况也是如此。基本上,我们需要指定一个块。新语法仅适用于对符号使用哈希时,这可能是问题的一部分。@MichaelCurrent所有这些键都是符号。这是正确的。新的散列语法显然在Aptana中有一个bug(或者至少有)。请参阅以下论坛帖子:@mbaumbach有趣;可惜已经一年了,页面上的问题链接被破坏了:(唉,互联网。我怀疑“错误”是一个简单的(因为解析Ruby很简单)解析值类型的问题。