Arrays 如果第二个是!=”“红宝石的
我有一个包含以下两个元素的数组:Arrays 如果第二个是!=”“红宝石的,arrays,ruby,string,Arrays,Ruby,String,我有一个包含以下两个元素的数组: if params["location"] params["location"]["street"] =[ params["location"].delete("address1"), params["location"].delete("address2") ].compact.join(", ") l = ::Location.create!(street: params["loca
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"])
我要做的是将由a表示的两个连接在一起,前提是address2是空字符串/nil
例1:
地址1=西盖街56号
地址2=第211单元
实际地址:西盖街56号211室
预计:西盖街56号211室
例2:
地址1=西盖街56号
地址2=
实际:西盖街56号,
预期:56 West Gay Street假设a和b是您的两条字符串:
[a,b].select(&:present?).join(", ")
假设a和b是两个字符串:
[a,b].select(&:present?).join(", ")
问题是params['location']['address2']不是空的,而是一个空字符串。可以使用仅选择非空字符串
if params['location']
street = [
params['location'].delete('address1'),
params['location'].delete('address2')
].select(&:present?).join(', ')
l = ::Location.create!(params['location'].merge('street' => street))
end
问题是params['location']['address2']不是空的,而是一个空字符串。可以使用仅选择非空字符串
if params['location']
street = [
params['location'].delete('address1'),
params['location'].delete('address2')
].select(&:present?).join(', ')
l = ::Location.create!(params['location'].merge('street' => street))
end
这给了我真假,我想我需要&:在场,就像下面的答案。谢谢你的帮助,虽然重要的部分完全一样?取决于你如何设置a和b。select将从给定条件为truthy的枚举中选择所有值。所以一个空字符串或nil将被删除。这给了我true,false,我想我需要&:存在,如下面的答案。谢谢你的帮助,虽然重要的部分完全一样?取决于你如何设置a和b。select将从给定条件为truthy的枚举中选择所有值。所以会删除一个空字符串或nil。这在Rails上是可行的,但是如果问题是关于ruby的,那么我们必须定义一个present?方法,或者将其与或进行比较,这将在Rails上工作,但是如果问题是关于ruby的,那么我们必须定义一个礼物?方法或将其与或nil进行比较