0

事情就是这样。我有一个按钮,根据场景的不同,它的行为、外观和文本都不同。目前大致是这样的:

- if params[:param_A] && @statement_A
  %span.button.cancel_button{attribute: "value_B"}
    - if @statement_B
      = t('locale_A')
    - else
      = t('locale_B')
- elsif params[:param_A]
  %span.button.cancel_button{attribute: "value_A"}
    - if @statement_B
      = t('locale_A')
    - else
      = t('locale_B')

还有一个 CSS 类,两个按钮都应该有 IF statement_B 为真。

所以这是一团糟。我最近读到了我非常喜欢的“告诉,不要问”原则,所以我很想在这里应用它......但我不确定如何。

我知道我可以做一个帮手,但我想远离他们,因为原因(我确实有一些正当的理由这样做,但这些超出了这个问题的范围)。我可以将其作为最后的资源,但宁愿找到另一种解决方案。

4

1 回答 1

1

这与haml无关。您可以使用 tekll-don'r ask 从示例的外观开始:

- if params[:param_A] 
  %span.button.cancel_button{attribute: @object1.value}
    = t(@object2.locale)

或者

- if params[:param_A] 
  %span.button.cancel_button{attribute: @object.value}
    = t(@object.locale)

(取决于您的偏好/A/B 声明的真正含义)

为此,您需要在渲染之前根据语句值初始化对象。

于 2012-10-03T22:02:27.600 回答