Ruby on rails YAML文件有一个语法错误,但它看起来与另一个正在工作的文件具有相同的格式?
我有两个类似格式的YAML文件,但是当我在rails应用程序上运行集成测试时,其中一个正在运行,另一个没有运行 以下是第一个无法工作的YAML文件:Ruby on rails YAML文件有一个语法错误,但它看起来与另一个正在工作的文件具有相同的格式?,ruby-on-rails,yaml,Ruby On Rails,Yaml,我有两个类似格式的YAML文件,但是当我在rails应用程序上运行集成测试时,其中一个正在运行,另一个没有运行 以下是第一个无法工作的YAML文件: prince_edward_island: name: 'prince edward island' country: 'Canada' 新斯科舍省: 名称:“新斯科舍省” 国家:'加拿大' newfoundland: name: 'newfoundland' country: 'Canada' new_brunswick:
prince_edward_island:
name: 'prince edward island'
country: 'Canada'
新斯科舍省:
名称:“新斯科舍省”
国家:'加拿大'
newfoundland:
name: 'newfoundland'
country: 'Canada'
new_brunswick:
name: 'new brunswick'
country: 'Canada'
quebec:
name: 'quebec'
country: 'Canada'
manitoba:
name: 'manitoba'
country: 'Canada'
alberta:
name: 'alberta'
country: 'Canada'
ontario:
name: 'ontario'
country: 'Canada'
british_columbia: 'Canada'
name: 'british columbia'
country: 'Canada'
saskatchewan: 'Canada'
name: 'saskatchewan'
country: 'Canada'
下面是第二个YAML文件,它可以工作:
student_advisor_message:
body: 'This is a message'
subject: 'Subject!'
user: student_advisor
manager_message:
body: 'This is a message'
subject: 'Subject!'
user: manager
read_manager_message:
body: 'This is a message'
subject: 'Subject!'
user: manager
agent_manager_message:
body: 'This is a message'
subject: 'Subject!'
user: agent_manager
message_for_jack:
body: 'This is a message'
subject: 'Subject!'
user: manager
message_for_jack_sent:
body: 'This is a sent message'
subject: 'Sent Subject!'
user: manager
message_for_jack_trash:
body: 'This is a trashed message'
subject: 'Trash Subject!'
user: manager
错误是:
ERROR:
while parsing a block mapping
in "<unicode string>", line 1, column 1:
prince_edward_island:
^
expected <block end>, but found '<block mapping start>'
in "<unicode string>", line 34, column 3:
name: 'british columbia'
错误:
在分析块映射时
在“”第1行第1列中:
爱德华王子岛:
^
应为,但找到“”
在“”第34行第3列中:
名称:不列颠哥伦比亚省
有人能解释一下我在这两者之间缺少的区别吗?对于这两种类型,我都使用空格,而不是制表符。yaml文件中的父级不能有值 当您从这些行中删除(或注释)
Canada
时,它将正确解析
british_columbia: 'Canada'
name: 'british columbia'
country: 'Canada'
saskatchewan: #'Canada'
name: 'saskatchewan'
country: 'Canada'
有几个错误: 对于两者,我都使用制表符,而不是空格 制表符在YAML中不允许作为缩进字符
country: 'Canada'
nova_scotia:
在这里,您给出了一个标量('Canada'
)和一个映射(从新斯科舍省开始:
)作为键国家的值。此键只能有一个值。您必须删除标量'Canada'
,或者将其包含的映射移到其他位置
british_columbia: 'Canada'
name: 'british columbia'
country: 'Canada'
saskatchewan: 'Canada'
name: 'saskatchewan'
country: 'Canada'
在这里,您又犯了两次相同的错误。您能详细说明您所犯的错误吗?首先,我指的是空格,而不是制表符**,我道歉。第二,我的代码的后半部分被意外地重新标记。至于第三点,我相信这就是错误所在,谢谢。Amit也有正确的答案,但由于这对于未经编辑的问题更为彻底,我将接受这个问题。