unless @client.nil?
TestMailer.snap_shot_error("test1","Errors",
{:file_name => File.basename(upload_file),:client_name => @client.client_name})
else
TestMailer.snap_shot_error("test1","Errors",
{:file_name => File.basename(upload_file))
end
def snap_shot_error(to_address,subject,options={})
# code
end
<% if @client_name %>
<%= _("There were problems with file ") + @file_name + _(" for client ") + @client_name %>
<% else %>
<%= _("There were problems with file ") + @file_name %>
<% end %>
Répondre
Pour ces deux questoin, vous pouvez utiliser l'opérateur ternaire. Cela fonctionne comme ceci
condition ? value_if_true : value_if_false
Ceci est une expression (une séquence de valeurs et d'opérateurs qui produit une autre valeur). Il détermine si la condition est vraie ou fausse, et évalue à la première valeur (après le? Et avant le :) si la condition est vraie, et la deuxième valeur (après le :) si la condition est fausse.
Ainsi, pour le premier exemple de code affiché, vous pouvez le faire:
TestMailer.snap_shot_error("test1", "Errors",
:file_name => File.basename(upload_file),
:client_name => @client ? @client.client_name : nil)
[Notez que j'ai enlever les accolades autour des options - en Ruby il ne sont pas nécessaires pour la finale les options de hachage, et il est idiomatiques de les laisser off]
Ou si, pour une raison quelconque, vous ne voulez même pas nul: client_name dans le hachage, vous pouvez utiliser l'opérateur ternaire et une fusion:
TestMailer.snap_shot_error("test1", "Errors",
{:file_name => File.basename(upload_file)}.merge(
@client ? { :client_name => @client.client_name } : {}))
Pour la vue, vous pouvez également utiliser l'opérateur ternaire:
<%= _("There were problems with file ") + @file_name +
(@client_name ? _(" for client ") + @client_name : '') %>
Et maintenant que je vois ce que vous faites avec @client_name, je ne vois pas pourquoi vous avez dit vous avez besoin que ce soit même pas dans la hacher. Le premier exemple de code que j'ai posté, où il passe ": client_name => @ client.client_name" s'il y a un client et passe ": client_name => nil" s'il n'y a pas de client, cela devrait fonctionner correctement. Il n'y a aucune raison de ne pas passer: client_name au lieu de simplement passer un nil: nom_client.
- 1. Comment écrire cette condition T-SQL WHERE?
- 2. Comment écrire cette méthode en Objective-C?
- 3. Rails - Comment puis-je écrire cette condition de chaîne comme une condition de tableau
- 4. Est-ce que cette condition est correcte dans Linq-to-sql?
- 5. node_load(): syntaxe correcte pour cette utilisation-case
- 6. Cette méthode de conversion d'une méthode asynchrone en une méthode synchrone est-elle correcte?
- 7. Syntaxe correcte pour la condition booléenne dans la recherche
- 8. si cette syntaxe php est correcte?
- 9. Méthode correcte pour compter les variables vides
- 10. Méthode correcte pour créer une association DataMapper
- 11. Technique correcte pour écrire des objets d'interface réutilisables?
- 12. Méthode efficace pour implémenter cette requête ActiveRecord
- 13. Cette comparaison booléenne est-elle correcte?
- 14. Comment écrire cette regexp?
- 15. SQLite - comment écrire une jointure correcte?
- 16. comment écrire Ou condition en javascript?
- 17. Cette attribution de propriété pour iOS est-elle correcte?
- 18. Quelle est la syntaxe correcte pour cette utilisation de MethodInvoker?
- 19. Quelle est la grammaire correcte pour cette langue?
- 20. Comment créer une condition unique pour cette requête SQL?
- 21. Comment écrire cette requête dans Linq2Sql
- 22. Meilleure méthode pour écrire un pollueur d'email
- 23. Cette implémentation IDisposable est-elle correcte?
- 24. Cette instruction est-elle correcte dans Java?
- 25. Cette règle mod_rewrite est-elle correcte?
- 26. Cette syntaxe sql est-elle correcte?
- 27. cette procédure stockée est-elle correcte?
- 28. cette syntaxe PHP est-elle correcte?
- 29. Si cette fonction est correcte ou non?
- 30. Quel correctif PNG fonctionnera dans cette condition?
Je ne veux pas passer la clé client_name dans les options. Si @client n'est pas disponible. –
@krunal shah, j'ai déjà mis à jour mon post pour tenir compte de cette possibilité. Voir la mise à jour. –
Merci pour votre réponse. Comment puis-je résoudre le même problème avec mon point de vue? J'ai mis à jour ma question. –