Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails地址格式助手_Ruby On Rails_Ruby_Street Address - Fatal编程技术网

Ruby on rails Rails地址格式助手

Ruby on rails Rails地址格式助手,ruby-on-rails,ruby,street-address,Ruby On Rails,Ruby,Street Address,我正在尝试创建一个助手,它将从5列(add1、add2、add3、add4、add5)格式化一个地址,以便压缩任何空值并显示在屏幕上 Add1, Add3, Add4, Add5 (已跳过添加2,因为它为空) 我创建了以下帮助程序来汇编和跳过任何空值,但我不能引入新的换行符。有什么想法吗 def delivery_address(customer) @customer = Customer.find(customer.id) if @customer.del_address1.blank

我正在尝试创建一个助手,它将从5列(add1、add2、add3、add4、add5)格式化一个地址,以便压缩任何空值并显示在屏幕上

Add1,
Add3,
Add4,
Add5
(已跳过添加2,因为它为空)

我创建了以下帮助程序来汇编和跳过任何空值,但我不能引入新的换行符。有什么想法吗

def delivery_address(customer)
@customer =  Customer.find(customer.id) 

if @customer.del_address1.blank? 
  deladdress = "No Delivery Address"
else

    deladdress = @customer.del_address1 
    deladdress = deladdress + "</br>"

  if customer.del_address2.blank?
    else 
    deladdress = deladdress + @customer.del_address2 + ","

  end

  if @customer.del_address3.blank?
    else 
    deladdress = deladdress +  @customer.del_address3 + ","

  end

  if @customer.del_address4.blank?
    else 
    deladdress = deladdress +  @customer.del_address4 + ","

  end

  if @customer.del_address5.blank?
    else 
    deladdress = deladdress +  @customer.del_address5

  end

end

end
def交付地址(客户)
@customer=customer.find(customer.id)
如果@customer.del_address1.blank?
deladdress=“无送货地址”
其他的
deladdress=@customer.del_address 1
deladdress=deladdress+“
” 如果customer.del_address2.blank? 其他的 deladdress=deladdress+@customer.del_address2+“,” 结束 如果@customer.del_address3.blank? 其他的 deladdress=deladdress+@customer.del_address3+“,” 结束 如果@customer.del_address4.blank? 其他的 deladdress=deladdress+@customer.del_address4+”,“ 结束 如果@customer.del_address5.blank? 其他的 deladdress=deladdress+@customer.del_address 5 结束 结束 结束
您可以将所有值放入一个数组,然后删除任何空白值,而不是编写5个
if
语句

请注意,我在这里的代码是基于您的代码,但与您的问题所要求的不完全相同:

它将压缩任何空值

空字符串也被视为
空白?
(但
“”!=nil
)。所以这个方法也会跳过这些值


如果您只想忽略
nil
值,但保留空字符串,则将
reject(&:blank?)
替换为
compact

一条重要建议:不要在视图帮助器中执行任何数据库查询。这只能在控制器中完成。活动记录应该已经传递到helper函数中。所以这条线

@customer =  Customer.find(customer.id)
可以删除

def delivery_address(customer)
  # Use a guard clause, this reduces if nesting
  return 'No Delivery Address' if customer.del_address1.blank? 

  # Collect all parts    
  parts = [customer.del_address1, customer.del_address2, customer.del_address3, customer.del_address4, customer.del_address5]

  # Remove all empty parts.
  # Using a bang method is lighter on memory allocation
  # and will speed up performance.
  parts.reject!(&:blank?) 

  parts.join('<br/>').html_safe
end
def交付地址(客户)
#使用guard子句,这会减少嵌套
如果customer.del_address1.blank,返回“无送达地址”?
#收集所有零件
部分=[customer.del_地址1、customer.del_地址2、customer.del_地址3、customer.del_地址4、customer.del_地址5]
#拆下所有空零件。
#使用bang方法在内存分配上更轻松
#并将加快性能。
零件。拒绝!(&:空白?)
parts.join(“
”).html\u safe 结束
什么是“引入新的换行符”?您能详细说明一下吗?添加换行符,例如
或回车。@ChrisNash

\n
是两件不同的事情。你想要哪个?请讲清楚。@tomLord我想知道哪一个会给我多行文字的地址块。我在我的助手身上试过这两种方法,但两种方法都没有成功。Obvs我的语法有误,因为你的函数是一个视图助手,一个

标记将是合适的。我准备用压缩而不是空白来创建一个aswer,以匹配OP要求的内容(空值),很好,谢谢Tom,但是在页面上显示的是Taylor Road 23
Bradford
BD61BH@ChrisNash如上所述,您可以使用
.html\u safe
。如果没有问题的答案(即,在本例中,如何调用该方法?),我无法知道该解决方案是否完整:)谢谢,但在页面上,这只是在一行上显示地址的5行,而不是像我预期的那样拆分为多行。啊。我忘了打安全电话了。现在应该可以了,我刚刚重新加载了页面,地址很完美-这给我的心带来了欢乐谢谢!
def delivery_address(customer)
  # Use a guard clause, this reduces if nesting
  return 'No Delivery Address' if customer.del_address1.blank? 

  # Collect all parts    
  parts = [customer.del_address1, customer.del_address2, customer.del_address3, customer.del_address4, customer.del_address5]

  # Remove all empty parts.
  # Using a bang method is lighter on memory allocation
  # and will speed up performance.
  parts.reject!(&:blank?) 

  parts.join('<br/>').html_safe
end