に存在するかどうかを評価する文は私が持っているMiddleman data filedata/testimonials.yaml
:HAML定義されている場合?エントリは仲介データファイル
tom:
short: Tom short
alt: Tom alt (this should be shown)
name: Thomas
jeff:
short: Jeff short
alt: Jeff alt (this should be shown)
name: Jeffrey
joel:
short: Joel short (he doesn't have alt)
name: Joel
それはデフォルトの「短い」テキストまたは代替テキストのいずれかを持つことができます。いくつかの証言では、他の人に「短い」テキストを使用しながら、いくつかのページに代替テキストを使用したい。
私のtest.haml
では、代替テキストが存在するかどうかをチェックするHAMLステートメントを作成しようとしています。そうであれば、挿入する必要があります。そうでない場合は、代わりに標準テキストを使用する必要があります。
次の例は、手動で挿入できるため、data.testimonials[person].alt
がデータの情報を適切に参照していることを示しています。しかし、同じ変数をif defined?
ステートメントで使用すると、決してtrueを返しません。
Not-working 'if' way, because 'if defined?' never evaluates to true:
- ['tom','jeff','joel'].each do |person|
%blockquote
- if defined? data.testimonials[person].alt
= data.testimonials[person].alt
- else
= data.testimonials[person].short
Manual way (code above should return exactly this):
- ['tom','jeff'].each do |person|
%blockquote
= data.testimonials[person].alt
- ['joel'].each do |person|
%blockquote
= data.testimonials[person].short
結果がこれです:私は間違って何をやっている
?データが存在するかどうかをチェックする条件文を使用する方法はありますか?
これは素晴らしい作品で、私は短いバージョンが大好きです!このソリューションは任意の数のORステートメントで動作するので、今ではさらにバリエーションを導入できます。 – Rafal
@Rafalあなたは納得しています。私は理解したいと思っています。どうして正確に定義されていますか? –
これはうまくいきません。私はこの短いバージョンについて知りませんでした:)私はRubyの条件文がどのように動作するかについて何か不足していると思っていましたが、これは明らかにMiddlemanのバグです。 – Rafal