2015-12-02 20 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

相关问题