2012-05-04 1 views
0

Comment éviter les vérifications nulles avec Object.try pour les éléments suivants? J'ai essayé .try de plusieurs façons, mais toujours recevoir des erreurs, donc ma syntaxe est désactivée. Merci d'avance!Rails 3 - Syntaxe Object.try

Répondre

1

try n'est pas vraiment approprié pour cela: quel que soit le résultat image_tag sera toujours appelé - de sorte que vous pourriez finir par l'appeler avec nil. Vous devez vérifier si l'image existe en premier, puis créer une balise d'image uniquement dans ce cas. Donc, je recevrais le PeriodState dans votre contrôleur et un if simple dans votre vue:

# in controller 
@period_state = PeriodState.where("sla_id = ?", sla.id).last 

# in view 
<%= image_tag(@period_state.state.image_file) if @period_state %> 

Bien sûr, cela ne fonctionnera pas si l'une ou stateimage_file pourrait aussi être nul.

+0

Merci - Je pense que j'ai un autre problème dans le contrôleur parce que j'utilise @search: 'def index @search = Sla.search (params [: recherche]) @slas = @ search.all (: => "fiscal_year DESC, nom_projet ASC") \t @period_state = PeriodState.where ("sla_id =?", @ search.id) .dernier respond_to do | format | fin fin, donc je ne suis pas sûr de savoir comment obtenir le state_state pour les slas ... est-ce logique? ? –

+0

Modifié mon contrôleur à ceci: 'def index @search = Sla.search (paramètres [: recherche]) @slas = @ search.all (: order =>" fiscal_year DESC, nom_projet ASC "). Chaque { \t \t | s | \t \t @period_state = PeriodState.where ("sla_id =?", S.id) .last \t \t} respond_to do | Format | format.html # index.html.erb format.xml {render: xml => @slas} fin end', mais maintenant je reçois le même period_state pour tous les SLAs ... ugh –

+0

Je suis arrivé à ce travaillez en mettant tout dans la vue: '<% @period_state = PeriodState.where (" sla_id =? ", sla.id) .last%> \t <% = image_tag (@ period_state.state.image_fichier) si @period_state .state%> 'Merci! –