2012-01-04 16 views
0

申し訳ありませんが、これがベースである場合、または私はここで明らかなものを見逃しています。私はレールに新しい。if文が機能しないのはなぜですか?

私はHAMLを使用していますが、それは問題ではありません。すべてが解析され、私のステートメントは無視されています。

- unless @posts.nil? 
    - @posts[0..2].each do |post| 
    .tumblr_post{ :class => post['type']} 
     - type = post['type'] 
     - if type == 'photo' 
     %h3 IMAGE 
     %img{:src => post['photo_url1']} 
     = raw post['vid'] 
     .tumblr_text 
      .post_date= post['date'] 
      %h3= post['title'] 
      = raw post['photo_caption'] 
     - if post['type'] == 'regular' 
     .tumblr_text 
      .post_date= post['date'] 
      %h3= post['title'] 
      %h4 OMGNOT A PIC 
      = raw post['photo_caption'] 

私はいくつかの方法を試しましたが、なぜ動作しないのか分かりません。 divのクラスの一環として投稿['type']を印刷するコードは正常に動作します。しかし、if文では評価されません。

ここで理想的なのは、最終コードの空白やdivを避けるために、投稿タイプに応じて異なるdivを設定できることです。

正しい方向に私を指すことができるヒントや助けをありがとう!

+2

おそらく 'post ['type'] == 'photo''または実際に何があっても、それをどこかに出力してチェックするべきです(' =(post [' type '] ==' photo ') .inspect'しかし、私はHAMLを使ったことがないので、それはちょうど推測です)。あなたは理論的には、テンプレートが文字列 '写真'(クラス内)に変換するものを持っているかもしれませんが、ルビはこれに相当するとは考えていません(シンボルなど)。 – MrTheWalrus

+0

例えば、 'post ['type'] '' ':' 'photo''でした。それはあなたの条件には合致しませんでしたが、' '写真 ''と同じようにレンダリングされたのと同じように見えます。 – MrTheWalrus

+0

Aha!それは偽です。はい。私はちょうどto_sを私のハッシュが作成された場所に追加しました、そして、それは行くようです!ブリリアント。そんなにありがとう@MrTheWalrus、私はこれで長い間waaayのために頭を叩いていた。 – josh

答えて

0

@MeTheWalrusが指摘したように、問題は私の投稿['type]が文字列ではないため、trueと評価されていないという問題でした。 。、

私は検査(ポスト[ '型'] == '写真')でこれをチェック(と 'false' になった)ので、単純に文字列に変換する:

post['type].to_s 

ソートし、このと本当に評価されました!

関連する問題