2014-10-10 113 views
0

我希望尋找到一個哈希,但最後的值應該在那裏:刪除一個分裂的字符串的最後一個值

PARAMS發送到控制器

{ 
"user"=>{"email"=>"[email protected], 
[email protected]"} 

方法

def set_users 
    @users = params[:user][:email] 
    logger.debug "#{@users.split(",").each { |e| puts e }}" 
end 

日誌

[email protected] 
[email protected] 
["[email protected]", " [email protected]"] 

的要點是,#each取值([ 「[email protected]」, 「[email protected]」]),它是不是在哈希值。如何申請#each整個哈希除了這個值

+0

'delete(last)'中的'last'是什麼? - 一個局部變量? – Stefan 2014-10-10 08:41:20

+0

其實這是一個錯誤,理由不理.delete(last) – clement 2014-10-10 08:46:46

+0

你可以編輯你的問題來解決它(也許澄清你的要求)。 – Stefan 2014-10-10 08:48:28

回答

2

我會怎麼做:

@users.split(",")[0..-2] 

也就是說,採取一切,但最後。

所以:

logger.debug @users.split(",")[0..-2].join(', ') 

看來你只需要:

logger.debug @users 
+0

日誌成爲:[email protected] [「[email protected]」],這不是我想要的 – clement 2014-10-10 08:48:01

+0

編輯我的回答 – apneadiving 2014-10-10 08:55:17

+0

@apneadiving我不認爲OP想從數組中刪除任何東西,問題是關於重複的輸出,因爲'調試'和'puts' – Stefan 2014-10-10 08:57:02

0

你應該使用String#GSUB方法是這樣的:

def set_users 
    email = params[:user][:email] 
    params[:user][:email] = email.gsub(/,.*/i, '') 
end 
+0

日誌成爲:[email protected] [「[email protected]」] – clement 2014-10-10 08:55:36

0

重寫你的方法:

def set_users 
    @users = params[:user][:email].split(',') 
    @users.pop 
end 

然後您可以使用@users沒有最後一個,並從set_users方法返回值得到最後一個的信息。

+0

它只返回最後一個 – clement 2014-10-10 09:17:12

相關問題