Je veux faire un rendu conditionnel au niveau de la mise en page basé sur le modèle réel a défini content_for(:an__area)
, une idée de comment faire cela?Rails vérifier si le rendement: zone est définie dans content_for
Répondre
@content_for_whatever
est dépréciée. Utilisez content_for?
à la place, comme ceci:
<% if content_for?(:whatever) %>
<div><%= yield(:whatever) %></div>
<% end %>
L'aide 'content_for?' N'existe que dans Rails 3. Dans Rails 2 vous pouvez utiliser la variable d'instance '@content_for _...' . – lest
Excellent! J'ai écrit des solutions de rechange pour cela trop longtemps. Plus maintenant. – morganjlopes
travaille également dans les rails 4. great thx – daniel
Ok Je vais faire une réponse sans honte car personne n'a répondu et j'ai déjà trouvé la réponse :) Définir cela comme une méthode d'aide soit dans application_helper.rb ou partout où vous avez trouvé pratique.
def content_defined?(symbol)
content_var_name="@content_for_" +
if symbol.kind_of? Symbol
symbol.to_s
elsif symbol.kind_of? String
symbol
else
raise "Parameter symbol must be string or symbol"
end
!instance_variable_get(content_var_name).nil?
end
Eh bien, j'aime bien votre auto-réponse mais ... Point mineur, 'instance_variable_defined? (Nom_var_de_contenu)' est un peu plus net que de tester si c'est nul. Deuxième point plus important, la variable content_for instance est obsolète, donc votre solution n'est pas à l'épreuve du temps –
peut créer une aide:
def content_defined?(var)
content_var_name="@content_for_#{var}"
!instance_variable_get(content_var_name).nil?
end
Et utiliser dans votre mise en page:
<% if content_defined?(:an__area) %>
<h1>An area is defined: <%= yield :an__area %></h1>
<% end %>
Ceci ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire sous son article. – eirikir
Je suis d'accord @eirikir, je ne suis pas sûr de ce que mon moi de 6 ans pensait. Je prolonge et laisse ma réponse dedans pour ceux toujours sur Rails 2 .. sans le préambule inutile;) – Nick
pas vraiment nécessaire de créer une méthode d'assistance:
<% if @content_for_sidebar %>
<div id="sidebar">
<%= yield :sidebar %>
</div>
<% end %>
puis bien sûr à votre avis:
<% content_for :sidebar do %>
...
<% end %>
J'utilise tout le temps d'aller conditionnellement entre une colonne et deux la présentation des colonnes
Je ne suis pas sûr des conséquences sur les performances de l'appel rendement deux fois, mais cela va faire quelle que soit la interne la mise en œuvre du rendement (@content_for_xyz est dépréciée) et sans code supplémentaire ou méthodes auxiliaires:
<% if yield :sidebar %>
<div id="sidebar">
<%= yield :sidebar %>
</div>
<% end %>
<%if content_for?(:content)%>
<%= yield(:content) %>
<%end%>
- 1. Dans Emacs Lisp, comment vérifier si une variable est définie?
- 2. Vérification si une variable est définie?
- 3. si une variable est définie
- 4. Existe-t-il un moyen de vérifier si une étiquette est déjà définie dans LaTeX?
- 5. Comment vérifier si le formulaire est maximisé?
- 6. Est-il possible de vérifier si une fonction VBScript est définie?
- 7. Comment vérifier si le débogage est activé dans web.config
- 8. Est-il possible de vérifier si un flux de fichier est ouvert dans Rails?
- 9. Vérifier si un objet a le focus
- 10. Comment vérifier si l'option de débogage python est définie à partir d'un script
- 11. Collecte des ordures dans le rendement Méthodes
- 12. Comment savoir si une fonction est définie dans php
- 13. Façon de vérifier si TinyMCE est actif dans WordPress
- 14. content_for Inside Formbuilder
- 15. méthode non définie dans les rails
- 16. Comment utiliser JQuery.support pour vérifier si le navigateur est Firefox?
- 17. vérifier si le nombre entré est un chiffre en jquery
- 18. AS3: Vérifier si un dictionnaire est vide
- 19. Comment vérifier si une session est invalide
- 20. vérifier si un tableau est multidimensionnel
- 21. Linq2SQL vérifier si l'article est nulle
- 22. vérifier si une chaîne est un double
- 23. Comment vérifier si WordprocessingDocument est vide?
- 24. Comment vérifier si un pointeur est valide?
- 25. Comment vérifier si DLL est compilé debug-
- 26. Zend_Auth vérifier si l'utilisateur est connecté
- 27. Comment vérifier si FileObject est un dossier?
- 28. Dans Ruby, devrais-je utiliser || = ou si elle est définie? pour la mémo?
- 29. Vérifier si un élément est dans une séquence
- 30. Comment vérifier si la collection est vide dans NHibernate (HQL)?
Voir ma [réponse] (http://stackoverflow.com/questions/3347322/yield-if-content-render-something-otherwise-rails-3/7409626 # 7409626) pour créer une méthode d'aide pour encapsuler ce comportement dans Rails 3. – tristanm