J'ai un objet qui revient vide et est ici ce que je voudrais faireRuby/Rails - Tuyau double avec jeu de données vide
@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
Toute réflexion sur la façon de le faire fonctionner sans costaud instruction if
MISE À JOUR ::: Voici une copie de mon présentateur qui fonctionne plutôt bien. Je sais que j'ai mis la logique de collection à l'intérieur ici, mais il fonctionne de la façon
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
Quel est le problème avec l'ajout d'une classe méthode qui retourne 'default_layout' si la liste de photos est vide? Ensuite, vous pourriez 'PhotoPresenter.x (@photo) .to_json'. –
mu est trop court. Je ne suis pas sûr de suivre la différence sur ce que j'ai fait avec l'as_gallery. Doit manquer quelque chose. Vous voulez juste définir quelque chose dans l'initialisation pour retourner le blank_gallery. Pourriez-vous éventuellement répondre à la question avec un exemple. Ensuite, je pourrais accepter la réponse si c'est super génial :) Je fais ça maintenant. PhotoPresenter.as_gallery (@photos) et il retournera la valeur par défaut si l'ensemble est vide. C'est ce que vous vouliez dire? – bokor
Oui, je pense que votre 'as_gallery' est ce à quoi je pensais. Poussez la logique dans le modèle de sorte que vous ne devez vous inquiéter à ce sujet en un seul endroit. –