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')

両方のボタンに IF statement_B が true である必要がある CSS クラスもあります。

だからめちゃくちゃです。そして、私は最近、私がとても気に入った「教えて、聞かないで」の原則について読んだので、ここでそれを適用したいと思います...しかし、どうすればよいかわかりません.

ヘルパーを作成できることはわかっていますが、理由があるため、それらから離れたいと思います(そうする正当な理由がいくつかありますが、それらはこの質問の範囲を超えています)。最後のリソースとしてこれに頼ることはできますが、別の解決策を見つけたいと思います。

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 に答える