新手和其他人的代码。这是我们的yaml
current_colleges_for_degrees:
cahs:
label: 'college one'
com:
label: 'college two'
additional_current_colleges:
another:
label: 'another College'
yet:
label: 'yet another'
library:
label: 'Libraries'
然后我们有一个帮助文件:
def sorted_college_list_for_generic_works
list = COLLEGE_AND_DEPARTMENT["current_colleges_for_degrees"].merge(
COLLEGE_AND_DEPARTMENT["additional_current_colleges"]
)
list.keys.collect do |k|
list[k]["label"]
end.sort << "Other"
end
我需要接受并创建一个名为student_works的新方法 - 但是我需要删除数组中的最后一项:&#34; Libraries&#34;所以...
def sorted_college_list_for_student_works
list = COLLEGE_AND_DEPARTMENT["current_colleges_for_degrees"].merge(
COLLEGE_AND_DEPARTMENT["additional_current_colleges"]
)
***list.pop***
list.keys.collect do |k|
list[k]["label"]
end.sort << "Other"
end
但是不能让它工作......错误是: &#34; #error:未定义的方法`pop&#39;为...&#34;
作为一个新手,我不完全理解错误的含义。编辑:有没有更简单的方法来实现这一目标?在获得知识的同时接受建议!
端
答案 0 :(得分:3)
list
不是数组,而是哈希。哈希不定义#pop
方法,这就是您收到错误的原因。
要从哈希中删除项目,您可以使用#delete
方法并传递密钥。
list.delete("library")
答案 1 :(得分:1)
正如@Jack指出的那样,你正在使用的是列表而不是数组。我的问题是你为什么需要删除最后一项?如果你已经知道最后一把钥匙了吗?
我会这样:
my_list.delete(my_list.keys.last)