2013-01-17 2 views
1

Je lis le RailsTutorial et il est comme ceci: dans le fichier routes.rb nous avons ajouté:Comment les variables travaillent ensemble dans une application Rails MVC

resources :users 
  • Puis, dans les app/views fichier /users/show.html.erb que nous utilisons @user
  • ensuite dans app/controllers/users_controller.rb nous pouvons toujours utiliser @user
  • ensuite dans app/views/utilisateurs/show.html.erb à nouveau, nous pouvons utiliser @user

Donc, ne sont pas tous dans des dossiers et des classes différentes? alors @user est public? Comment voient-ils et travaillent-ils ensemble? parce que je n'ai pas une connaissance approfondie de Rails, tout cela me semble magique. Si quelqu'un pouvait faire la lumière sur ce qui se passait, ce serait génial.

+0

Ce sont des variables d'instance. Cette réponse pourrait être utile: http://stackoverflow.com/a/828519/427992 – hohner

Répondre

1

Les utilisateurs de votre question ne sont pas tous les mêmes:

  • à routes.rb, les utilisateurs ne sont pas les @users/@user variable, mais un symbole nommé: users. Cela peut être n'importe quoi d'autre: quelque chose, n'importe quoi, etc. C'est juste un paramètre de la méthode "resources", qui crée des routes en fonction du nom qui lui est passé. Donc si vous écrivez "resources: whatever", alors les rails généreront des routes par défaut pour une classe nommée WhateverController - si cela existe, cela fonctionnera
  • show.html est une vue. Il peut utiliser n'importe quelle variable membre déclarée dans son controller/action (qui est users_controller). Mais ce n'est pas global, si vous avez deux contrôleurs, ils ne peuvent utiliser que leurs propres variables. Plus encore, deux actions (méthodes) différentes dans un contrôleur ne peuvent pas utiliser les variables de l'autre, puisqu'elles ne sont pas déclarées à ce moment-là. variables
  • à users_controller.rb vous déclarer en fait les @users qui est utilisé dans la vue
1

Une requête touche d'abord votre fichier routes.rb qui dirigera la demande vers l'action du contrôleur appropriée.

ex. example.com/users/new ira à la nouvelle action UsersController

La nouvelle action définira des variables d'instance auxquelles vous pourrez accéder dans votre vue correspondante (le nouveau.html.erb dans votre dossier utilisateur).

ressources: les utilisateurs est un raccourci pour créer des rails de routage CRUD (http://guides.rubyonrails.org/routing.html#resources-on-the-web)

Chaque action du contrôleur va plus probablement avoir une affectation différente pour la variable d'instance @user. Lire cet exemple, http://www.tutorialspoint.com/ruby-on-rails/rails-controllers.html

Plus Bonne lecture: http://www.devarticles.com/c/a/Ruby-on-Rails/Rails-Action-Controller/1/

1

le @ signifie une variable d'instance. La portée d'une variable définit où et comment on peut y accéder. Il serait préférable pour vous d'en apprendre davantage sur les variables et leurs différents types en général. Vérifiez cela: http://ruby.runpaint.org/variables.

Questions connexes