2012-05-09 8 views
1

との二重管Iここに戻って空白くるとされているオブジェクトが、私はそれがif文がっしりした体格せずに動作させる方法についてルビー/ Railsの - 空白のデータセット

@photo = [] # this is coming back blank, but it won't do the correct comparison in the || 
@sanitized_photos = PhotoPresenter.new(@photo).to_json || PhotoPresenter.default_layout.to_json 

任意の考えをやりたいものです持っています

更新日:::ここに、私の発表者のコピーがあります。私は私が内部にここに収集ロジックを入れている知っているが、それはあなたがPhotoPresenterクラス初期化子にこのロジックを移動するはるかに優れているとされていることが最もきれいな方法

class PhotoPresenter < Presenter 

    def initialize(photo) 
    @photo = photo 
    end 

    def to_gallery 
    { 
     "thumb" => @photo.image.url(:thumb), 
     "image" => @photo.image.url(:large), 
     "big" => @photo.image.url, 
     "title" => @photo.attachable.name 
    } 
    end 

    def self.blank_gallery 
    { 
     "thumb" => help.polymorphic_photo_url(nil, :large), 
     "image" => help.polymorphic_photo_url(nil, :large), 
     "big" => help.polymorphic_photo_url(nil, :large), 
     "title" => "No photo provided" 
     } 
    end 

    def self.as_gallery(photos) 
    unless photos.blank? 
     photos.collect{|object| self.new(object).to_gallery}.to_json 
    else 
     blank_gallery.to_json 
    end 
    end 

end 
+0

写真のリストが空の場合は 'default_layout'を返すメソッドですか?その後、 'PhotoPresenter.x(@photo).to_json'を実行することができます。 –

+0

muが短すぎます。私はas_galleryで何をしたのかの違いを私が確信していません。何かが欠けているはずです。初期化でblank_galleryを返すために何かを設定するだけです。あなたはたぶんその例に答えてもらえますか?私はそれがスーパー素晴らしい場合は、私は答えを受け入れることができる:)今これをやっています。 PhotoPresenter.as_gallery(@photos)、セットが空の場合はデフォルトを返します。それはあなたが意味することですか? – bokor

+0

はい、あなたの 'as_gallery'は私が考えていたものだと思います。ロジックをモデルに押し込んで、1か所で心配するだけです。 –

答えて

0
@sanitized_photos = @photo.any? ? PhotoPresenter.new(@photo).to_json : PhotoPresenter.default_layout.to_json 

に動作するクラスを追加することで何が悪い

+0

Yuriy、私は現在あなたがそこにいるように働いています。あなたはif条件なしでこれを行うために離れていますか?私はプレゼンターでこれを行う方法を理解しようとしていますが、まだコードを動作させる良い方法はありません。私は後でリファクタリングすることができます...ありがとう! – bokor

+0

プレゼンターコードを共有できますか? –

+0

私はプレゼンターでクラスメソッドを作成しました...上記で編集しました – bokor

関連する問題