1

我正在使用 Sam Ruby 的“Agile Web Development With Rails”一书学习 Rails 开发,当我调用模型的构造函数时出现语法错误。我找到了两种使用替代语法调用构造函数的方法,但我真的很想知道为什么书中使用的语法在我的开发环境中不起作用。

本书使用的语法中键/值对被括号括起来,类似于:

product = Product.new (title: "foo", description: "yyy")

此代码在单元测试中。当我运行“rake test:units”时,出现以下错误:

product = Product.new (title: "foo", description: "yyy")

__ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ ^

ruby_book_demo/depot/test/unit/product_test.rb:16:语法错误,意外 tLABEL

请注意,我已经能够通过执行以下操作来解决语法错误:

product = Product.new title: "foo", description: "yyy" #WORKS

或者

product = Product.new ({title: "foo", description: "yyy"}) # WORKS!

但我真的很想知道为什么会出现错误。我正在使用 jruby:

jruby -v jruby 1.6.7.2 (ruby-1.9.2-p312) (2012-05-01 26e08ba)

谢谢。

4

1 回答 1

5

Product.new 和括号之间不能有空格:

Product.new(title: 'foo', description: 'bar')

它在没有括号的情况下工作的原因是因为它们是可选的并且在这种情况下需要一个空格。

于 2012-07-19T16:40:22.337 回答