如何让这个Haml更加DRY?

3

我正在一个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

我找到了这个,但它并不完全是同一个问题:Rails中如果为空则不显示字段

2个回答

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
如何尝试这样的内容:
- [: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等,因此您需要调整标题部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接