2015-12-02 62 views
0

我有以下兩個元素的數組:如何連接兩個數組的屬性,如果第二個是=「」在Ruby中

if params["location"] 
     params["location"]["street"] =[ 
      params["location"].delete("address1"), 
      params["location"].delete("address2") 
     ].compact.join(", ") 
     l = ::Location.create!(street: params["location"]["street"], 
      city: params["location"]["city"], 
      state: params["location"]["state"], 
      zip: params["location"]["postal"], 
      country: params["location"]["country"]) 

我所要做的是將兩個由一起sperated「! ,「只有address2是一個空字符串/ nil。

實施例1:

地址1 = 「56西大街同性戀」

地址2 = 「公寓211」。

實際: 「56西大街同性戀,Apt.211」
預計:「56 West Gay Street,Apt.211」


示例2:

地址1 = 「56西同性戀街」

地址2 = 「」

實際: 「56西同性戀街」
預期: 「56西同性戀街」

回答

1

的問題是,params['location']['address2']不是空的,而是空字符串。您可以使用present?僅選擇非空白的字符串。

if params['location'] 
    street = [ 
    params['location'].delete('address1'), 
    params['location'].delete('address2') 
    ].select(&:present?).join(', ') 

    l = ::Location.create!(params['location'].merge('street' => street)) 
end 
+0

謝謝你,這似乎工作! –

+0

這將在Rails上工作,但如果問題是關於ruby,我們必須定義一個'present?'方法或將它與''''''或'nil'比較, – Raman

1

假設ab是你的兩個字符串:

[a,b].select(&:present?).join(", ") 
+0

這給了我真實的,假我認爲我需要'&:存在'就像下面的答案。感謝您的幫助,雖然 –

+0

重要部分是完全一樣的嗎?取決於你如何設置a和b。 'select'將選擇給定條件爲真的enumerable中的所有值。所以一個空字符串或零將被丟棄。 – nathanvda

相關問題