2016-09-24 10 views
0

初心者で他の人のコードを操作しています。私はそれを取り、私は最後の項目を削除する必要がstudent_works-ブトと呼ばれる新しいメソッドを作成する必要がありRuby:#error:未定義のメソッド `pop '

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 

:これは

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' 

たちのYAMLである我々はこれでヘルパーファイルを持っています配列: 「#エラー:ため...未定義のメソッド `ポップ」」

「ライブラリ」そう...

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 

カントは、エラーがある...それはしかし、仕事に取り掛かります

初心者として、私は完全にエラーの意味を理解していません。編集:これを達成するための簡単な方法はありますか?私が知識を得るにつれて、提案に開放されています!

エンド

+0

ラッキー君:

私はこの道を行くだろう!他の人のコードで作業するよりも楽しいことは何ですか? –

+0

ええ、それは吸いません – LisaH

答えて

3

listそれはハッシュだ、配列ではありません。ハッシュは#popメソッドを定義していないため、エラーが発生しています。

ハッシュからアイテムを削除するには、#deleteメソッドを使用してキーを渡します。

list.delete("library") 
+0

しかし、上記のコードに挿入すると、 "文字列とnilの比較が失敗しました" – LisaH

1

@ジャックが指摘したように、あなたは配列ではなくリストを扱っています。私の質問は、なぜあなたは最後のアイテムを削除する必要がありますか?あなたはすでに最後のキーを知っていますか?

my_list.delete(my_list.keys.last)

関連する問題