我在 Sinatra 应用程序的 .haml 模板文件中有以下代码:
- if(@order == 'inverse')
- @list.reverse_each do |item|
.item
%span.action-move(data-icon="o")
.detail.title=item[0]
.detail.content=item[1]
%span.action-delete(data-icon="d")
- else
- @list.each do |item|
.item
%span.action-move(data-icon="o")
.detail.title=item[0]
.detail.content=item[1]
%span.action-delete(data-icon="d")
如您所见,5 行代码是相同的。有没有一种方法可以重构此代码以避免此处的重复而无需创建一个额外的文件用作部分文件?
最佳答案
在我的脑海中——你可以创建一个你将在条件中设置的临时列表,然后像这样遍历临时列表:
- if(@order == 'inverse')
- temp = @list.reverse
- else
- temp = @list
- @temp.each do |item|
.item
%span.action-move(data-icon="o")
.detail.title=item[0]
.detail.content=item[1]
%span.action-delete(data-icon="d")
关于ruby - 有什么方法可以在不创建新文件的情况下避免 haml 代码重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16927113/