2010-03-24 5 views

Répondre

4
  • @comment fait référence à une variable d'instance qu'un contrôleur Rails met à la disposition d'une vue. Ceci est l'utilisation la plus courante
  • :comment est un symbole Ruby et est utilisé lorsque le nom d'un modèle est requis. Vous verrez généralement ceci avec l'aide form_for et d'autres aides à la vue fournies par Rails.
  • comment est une variable locale. Vous verrez généralement cela dans Rails lorsqu'un modèle de vue utilise un partial template (appelé simplement partiel). Le modèle de vue parent passe un ou plusieurs de ses variables d'instance dans la partie de sorte que l'a accès/les partiel, quelque chose comme:

    <%= render :partial => 'comment', :locals => { :comment => @comment } %>

— Dans cet exemple, le commentaire partiel (comment.html.erb) a accès à la variable d'instance via la variable locale comment, donc il peut faire des choses comme comment.author etc.

+0

Excuses, John. J'ai senti qu'il avait besoin d'un peu plus d'explications. –

+0

Pas besoin de vous excuser. –

+0

Ceci est incroyable, cela devrait être expliqué plus sur les tutoriels et les livres ruby. Maintenant, mon univers ferroviaire devient plus petit vers la maîtrise. Merci! – Winston

2

Cela dépend vraiment du contexte. Le premier, @comment est généralement utilisé (comme John Topley l'a expliqué de manière similaire) pour configurer une variable à transmettre dans la chaîne de requête à vos vues, assistants et partiels qui sont rendus à partir de cette action.

Si vous utilisez dans un form_for vous référencer l'objet @comment vous avez très probablement mis en place dans le contrôleur:

<% form_for @comment do |f| %> 

Si vous passez un objet de commentaires comme local à un partiel que vous pourrait indiquer comme un symbole (comme John Topley dit):

<%= render :partial => "info", :locals => { :comment => @comment } 

Et si vous utilisiez comme une variable locale, vous pouvez être rendu une collection de commentaires:

<%= render :partial => @post.comments %> 

En passant la collection comments Partielle sera sur le premier introspect objet ici et déterminer est de la classe Comment et sera donc essayer de rendre les commentaires/_comment.html.erb partielle pour chacun des éléments en la collection (quel que soit le type des autres, ceci est un gotcha), les rendant chacun disponibles sous la forme comment.

+0

Merci! maintenant j'ai des distinctions et une compréhension explicites! – Winston

Questions connexes