マイカードゲーム(Squibで構築)は、CSVファイルに基づいています。このファイルには、main
という列が1つあります。あなたが見るようにここでSquibの特定の入力値のアイコンのみ表示
はコラムの内容は、... nil
がたくさんあります:各カード(行)のために
print data['main']
> [3, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 0, 0, nil, nil, 0, nil, nil, nil, 0, nil, nil, 0, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 1, nil, nil, nil, nil, nil, -1, nil, nil, nil, nil, 0, 0, 0, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]
望ましい行動
:
- この列に値がある場合は、SVGを背景として値を表示したいです。
- は値(
nil
)が存在しない場合、私は私が1を試してみました何
alltogetherテキストやSVGスキップしたい - 私は以下を試してみましたが、data['sprint']
がarray
ではありませんがvalue
、そう==
は動作しません:
data = Squib.csv file: 'data.csv'
[...]
if data['Sprint'] != nil
text str: data['Sprint3'], layout: 'sprint3'
svg layout: 'block', file: 'svg\left_block.svg'
end
2 - だから私は、each
メソッドを使って配列を反復処理しようとしましたが、これの各カードの配列のすべての要素が表示されます。
data['Main'].each do |n|
if n != nil
text str: n, layout: 'main'
svg layout: 'block', file: 'svg\up_block.svg'
end
end
ルビーの知識はここにあります。 main
列の値がnil
でない場合にのみ、1つの要素を表示する方法がわかりません。何か案が?ありがとう!
おかげで、私はその1つの自分自身をovercomplicated考えていました。条件付きロジックの必要がないので、それは良いです:Dしかし、私はまだそれを動作させる方法はまだ分かりません。この 'block 'レイアウトを、裸の' svg' call => 'svg layout:' block''に適用しますか?これは入ってくるデータに反応しないでしょうか?そうでなければ、これを 'text'コールに適用しますか?=>' text str:data ['Main']、layout: 'block''?これは残念なことに私の目的ではまだ機能しません。この場合、svgは表示されません。 –
最終的にあなたの意図を理解していると思います。レイアウトを入力データの一部として設定することを意図していました。レイアウト欄したがって、 'svg layout:data ['layout']'のような呼び出しを使うと、配列が得られ、非 'nil'値だけが考慮されます。この仮定が正しいとすれば、CSVファイルで自分自身を繰り返しすぎることなくこのレイアウト列を作成する方法を知る必要があるだけです(値が列Aにある場合は列Bそうでなければ空のままにしておきます...) –
ええ、それは私が意味するものです。もちろん、 'layout'と呼ぶ必要はありません。' svg layout:data ['faction'] 'のように、あなたのゲームからわかりやすいものを呼び出すことができます。そして、あなたの前提は正しいと思います。あなたのカードをカテゴリに分類し、カテゴリーに応じてスタイルを設定するように考えてください。 – Andy