Aug*_*ger 16 ruby haml operators
1.我找不到一种优雅的方式来编写这段代码:
if array.empty?
# process empty array
else
array.each do |el|
# process el
end
end
Run Code Online (Sandbox Code Playgroud)
我想有一个循环,没有写array两次.我读过这篇文章,但没有足够的解决方案.
2.我实际上是在一个HAML模板中.同样的问题.
- if array.empty?
%p No result
- else
%ul
- array.each do |el|
%li el
Run Code Online (Sandbox Code Playgroud)
小智 26
关于什么?
array.each do |x|
#...
puts "x",x
end.empty? and begin
puts "empty!"
end
Run Code Online (Sandbox Code Playgroud)
我在HAML(不是普通的Ruby)中看到的最干净的方法是这样的:
- array.each do |item|
%li
= item.name
- if array.empty?
%li.empty
Nothing here.
Run Code Online (Sandbox Code Playgroud)
正如其他答案所提到的那样,没有必要使用该else条款,因为这已经隐含在其他逻辑中.
即使你可以在一个简洁的行中执行each-else,你也无法实现你想要实现的标记(<p>如果是array.empty?,<ul>如果是array.present?).此外,您在问题中显示的HAML是告诉代码背后故事的最佳方式,这意味着它对其他开发人员更具可读性和可维护性,因此我不知道您为什么要重构为更隐蔽的内容.
| 归档时间: |
|
| 查看次数: |
12014 次 |
| 最近记录: |