Ruby on rails 我怎样才能把这个火腿擦干?

Ruby on rails 我怎样才能把这个火腿擦干?,ruby-on-rails,haml,dry,Ruby On Rails,Haml,Dry,我在一个Rails应用程序中工作,这个Haml已经重复了十几次。我如何重构这个?我觉得一个助手会很好,但是我真的不确定助手中应该包含什么代码 - if @object.thing .row .col-md-12 .campaign-summary-title Thing = render text: @campaign.thing.html_safe - if @object.thing2 .row .col-md-12

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

- 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

我发现了这个问题,但实际上不是同一个问题:

类似这样的问题怎么样:

- [: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
您将不得不对标题位大惊小怪,因为它不清楚您想要如何派生
东西
东西2
,等等。

您可以使用。您的部分(
\u partial\u 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