ruby - 有什么方法可以在不创建新文件的情况下避免 haml 代码重复?

标签 ruby sinatra haml

我在 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/

相关文章:

ruby - Sinatra::Application:Class 的未定义方法 `desc'

ruby - 如何使用 RSpec 在 gem 中测试 Sinatra 应用程序?

html - HAML 在没有换行符的文本中使用链接

node.js - 浏览器兼容的 NodeJS 模板

ruby-on-rails - 如何从所有用户的电子邮件中设置用户名?

ruby - 为什么ruby mechanize gem在登录后给出403响应?

ruby - 启动 Clojure 应用程序工头的问题

ruby-on-rails - rails : encoding woes with serialized hashes despite UTF8

javascript - Ruby:接收并打印 JSON 对象

ruby - 设计和current_page?