我在做什么错误 - 语法错误意外“\ n”,期待=>

问题描述:

这是我的Ruby代码(我沿着哈特尔的Ruby on Rails的指导下),这是User_test.rb我在做什么错误 - 语法错误意外“ n”,期待=>

test "email validation should accept valid addresses" do 
    valid_addresses = %w[[email protected] [email protected] [email protected] 
         [email protected] [email protected]] 
    valid_addresses.each do |valid_address| 
    @user.email = valid_address 
    assert @user.valid?, "#{valid_address.inspect} should be valid" 
    end 
end 

test "email validation should reject invalid addresses" do 
    invalid_addresses = %w[[email protected],com user_at_foo.org [email protected] 
         [email protected] [email protected]+baz.com] 
    invalid_addresses.each do |invalid_address| 
    @user.email = invalid_address 
    assert_not @user.valid?, "#{invalid_address.inspect} should be invalid" 
    end 
end 

错误如下,我无法弄清楚如何解决它 - 更多有经验的人知道我做错了什么?

1) Error: 
UserTest#test_email_validation_should_reject_invalid_addresses: 
SyntaxError: /home/ubuntu/workspace/app/models/user.rb:4: syntax error,  unexpected '\n', expecting => 

这里是User.rb代码

class User < ActiveRecord::Base 
    has_many :microposts 

    VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i 

    validates :name, presence: true, length: { maximum: 50}, 
    validates :email, presence: true, length: { maximum: 255}, 
    format: { with: VALID_EMAIL_REGEX }, uniqueness: true, case_sensitive: false    
end 
+2

你粘贴了你的测试代码,但它看起来像你的语法错误在你的用户模型 –

+2

(1)请注意你如何格式化你的代码,你的奇怪的缩进(和缺乏)使你的代码非常难以阅读。 (2)你的'User'类的第三行有一个逗号尾随的逗号。 –

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

您需要删除,,林心如觉得你继续,否则你的哈希的定义。

unexpected '\n', expecting => 基本上意味着,红宝石不期待一个新的线,但随后是=>和的值的哈希的用钥匙的定义。

PS:另外一个原因是我不太喜欢缩写的Ruby Hash符号。在代码中找不到=>,这使得难以理解错误消息。