【问题标题】:How can I DRY up this Haml?我怎样才能把这个哈姆尔弄干?
【发布时间】:2018-01-25 15:49:17
【问题描述】:

我在一个 Rails 应用程序中工作,我已经让这个 Haml 重复了十几次。我该如何重构呢?我觉得 helper 会很适合这个,但我真的不确定 helper 中应该包含什么代码。

- if @object.thing
  .row
    .col-md-12
      .campaign-summary-title Thing
      = render text: @campaign.thing.html_safe
- if @object.thing2
      .row
        .col-md-12
          .campaign-summary-title Thing2
          = render text: @object.thing2.html_safe

我找到了这个,但这不是同一个问题:Dont show field if blank Rails

【问题讨论】:

    标签: ruby-on-rails haml dry


    【解决方案1】:

    您可以使用partial。您的部分 (_partial_name.html.haml) 看起来像:

    - if @object[field]
      .row
        .col-md-12
          .campaign-summary-title= field.capitalize
            = render text: @object[field].html_safe
    

    这使您可以在不同的文件中使用此代码,将其称为:

    = render partial: "partial_name", field: "thing"
    = render partial: "partial_name", field: "thing2"
    

    如果有很多字段,例如,您可以这样写:

    - ["thing", "thing2"].each do |field|
      = render partial: "partial_name", field: field
    

    【讨论】:

      【解决方案2】:

      怎么样:

      - [:thing, :thing2].each do |thing_sym|
        - if @object.send(thing_sym)
          .row
            .col-md-12
              .campaign-summary-title #not sure what you want here
              = rendertext: @campaign.send(thing_sym).html_safe
      

      您将不得不对标题位大惊小怪,因为不清楚您想如何得出 ThingThing2 等。

      【讨论】:

        猜你喜欢
        • 2023-03-23
        • 1970-01-01
        • 2022-11-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多