2017-08-15 55 views
1

我有以下幾點:如何將項附加到一個數組

myObject = { 
    id: user.id, 
    email: user.email, 
} 

我需要添加像這樣的值:

if current_user && current_user.id == user.id 
    myObject << { 
    notification_email: user.notification_email, 
    notification_email2: user.notification_email2 
    } 
end 

上面的代碼會產生錯誤。

什麼是正確的方式來選擇追加值的對象?

錯誤

未定義的方法`< <'爲#你是什麼意思? <

+0

你的意思是**可選**追加值? – sawa

+0

你會得到什麼錯誤? – sawa

+1

我在代碼中的任何地方都看不到數組。 'myObject'是一個[Hash](https://ruby-doc.org/core-2.4.1/Hash.html)。 –

回答

7

也許你想Hash#merge

myObject.merge(
    notification_email: user.notification_email, 
    notification_email2: user.notification_email2 
) 

如果您想要副作用,請使用加粗版本。

myObject.merge!(
    notification_email: user.notification_email, 
    notification_email2: user.notification_email2 
) 
+0

謝謝但是沒有添加這些值......它沒有效果 – AnApprentice

+0

我添加了該部分。 – sawa

+1

@AnApprentice它不會修改原始對象,但會爲添加的新元素生成一個副本。使用bang'!'版本修改原始對象 –

4

myObject哈希,所以要加新的項目,你可以這樣做:

if current_user && current_user.id == user.id 
    myObject[:notification_email] = user.notification_email 
    myObject[:notification_email2] = user.notification_email2 
end 
相關問題