Ruby on Rails: conditionnellement affichage partiel
Je ne suis pas sûr si je suis en train de faire la meilleure approche ici, mais j'ai un bloc de données que je veux montrer, après une recherche est effectuée et pour ne pas être là du tout avant. Tout d'abord, il n'y a rien à montrer, et la seconde, le modèle de référence est nul, de sorte qu'il déclenche une exception.
Je l'ai mise à bloquer une partie du modèle et de l'ajouter à l'endroit approprié dans ma mise en page. Est-il un moyen de rendre correctement la partielle conditionnellement? Est-il une meilleure façon d'aborder ce problème?
Vous devez vous connecter pour publier un commentaire.
Ruby permet de faire de belles choses comme ceci:
Pour rendre cela un peu plus facile à lire et à comprendre, il peut être écrite comme:
render
est une fonction, et vous faire passer un hachage qui l'informe de la partielle à rendre. Ruby permet de mettre les choses sur une seule ligne (ce qui les rend souvent plus concis et lisibles, en particulier dans les points de vue), de sorte que leif @conditions
l'article est juste une simple instruction if. Il peut également être fait comme:Edit:
Ruby vous permet également d'utiliser le
unless
mot-clé à la place deif
. Cela rend le code plus lisible, et vous empêche d'avoir à faire des comparaisons négatives.<%= render :partial => "foo/bar" unless @conditions %>
est la concision que je cherchais. Et, quant à votre commentaire ci-dessous, je suis d'accord qu'il serait stupide d'être complètement dogmatique au sujet de la séparation des préoccupations. C'est effectivement une raison pour laquelle j'aime les Rails de template de souplesse par rapport à un système comme Django a. Mais je ne tiens à limiter le plus possible. Cauchemar des flash-back de mes journées à faire de l'asp classique, je suppose. Merci pour l'aide!Un moyen facile est d'utiliser une méthode d'aide. Les aides ont tendance à être un peu plus propre que de mettre de la logique directement dans la vue.
Donc, votre point de vue pourrait être quelque chose comme :
et votre assistant aurait une méthode pour contrôler ce:
où, évidemment, les choses sont nommées de façon plus appropriée
En supposant que je suis vous droit, vous le faites au niveau de la vue.
Espère que ça aide. Si non, peut-être poster un exemple de votre code.