我该怎么干这个哈姆?

时间:2018-01-25 15:49:18

标签: 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
          .campaign-summary-title Thing2
          = render text: @object.thing2.html_safe

我发现了这一点,但它并不是同一个问题:Dont show field if blank Rails

2 个答案:

答案 0 :(得分:3)

您可以使用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

答案 1 :(得分:1)

如下:

- [: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等。