quelle est la différence entre link_to, redirect_to, et de rendre?
Je suis confus au sujet de la principale différence(s) entre link_to
, redirect_to
et render
dans les Rails. n'importe qui peut expliquer.
Vous devez vous connecter pour publier un commentaire.
link_to est utilisé dans votre point de vue, et génère un code html pour un lien
Cela va générer, à votre avis, le code html suivant
redirect_to et le rendu sont utilisés dans votre contrôleur pour répondre à une demande.
redirect_to sera tout simplement rediriger la demande vers une nouvelle URL, si dans votre contrôleur, vous ajoutez
toute personne accédant à votre page de être redirigé vers Google
de rendu peuvent être utilisés dans de nombreuses façons, mais il est principalement utilisé pour le rendu html de votre point de vue.
Cela permettra de rendre la vue "app/views/article/show.html.erb"
Le lien suivant vous expliquera la redirect_to et le rendu des méthodes plus en détail
http://guides.rubyonrails.org/layouts_and_rendering.html
De la La Documentation:
Concernant le rendu de la vue vs rediriger une demande
Concernant le rendu de la vue
Concernant la redirection d'une demande
En gros:
link_to est une méthode d'aide à générer des Url généralement utilisé dans votre point de vue (.html.erb fichiers)
rendre dit de votre contrôleur pour effectuer le rendu d'une vue sans la transmission des données (par exemple, à partir d'un formulaire) à la prochaine action du contrôleur.
redirect_to fait une redirection 302, le passage des données (par exemple, à partir d'un formulaire), soit l'action d'un contrôleur sur votre application web, ou une application externe (ex: google, facebook, un site web article vous a plu, etc)
link_to
est pour une utilisation dans ERB modèles. Elle génère un lien vers un chemin ou l'url.redirect_to
est pour une utilisation dans les contrôleurs. Il provoque le client demande le chemin d'accès spécifié ou l'url une fois que le contrôleur de sortie de la méthode.render
est également pour une utilisation dans les contrôleurs. Il provoque des Rails de de rendre le modèle spécifié.redirect_to
etrender
ne peut être appelé qu'une seule fois dans une méthode de contrôleur.J'ai fait viens d'écrire un post sur ce blog. Bits les plus importants sont copié ci-dessous (avec des modifications).
Méthodes de contrôleur:
render
vsredirect_to
render
etredirect_to
sont les deux moyens que les actions du contrôleur de fin de (en règle générale). Pour comprendre comment ils fonctionnent, passons en revue ce que les contrôleurs ne dans une application Rails:(http://localhost:3000/books/index.html)
(
GET /books/index.html
)(
books GET /books/index(.:format) books#index
)Cette dernière étape se produit explicitement lorsque vous appelez
render
ouredirect_to
, ou implicitement que si vous les laisser.Qui est,
est le même que
render :index
dit, " combiner les données que j'ai préparé (@books = Book.all
) avec lebooks/index.html.erb
modèle de vue de générer un état complet du document HTML, puis l'envoyer au client.’redirect_to @book
dit, " dites au client de démarrer le processus entier de nouveau, de délivrer un nouveauGET
demande àurl_for(@book)
.Si vous omettez la fois, l'action se rendre d'un modèle avec le même nom que l'action elle-même. En d'autres termes, vous ne devez appeler
render
explicitement lorsque le modèle que vous désirez ne correspond pas à l'action, vous vous êtes rendu de.Noter que chaque contrôleur de l'action correspond à un modèle de vue. Généralement,
#create
,#update
, et#destroy
(qui sont tous acheminés à la non-GET
requêtes HTTP) tenter de faire quelques changements à la base de données, et ensuite, soitredirect_to
une ressource (si il a réussi) ou re-render
la forme qui l'a précédé, avec toutes les erreurs (si elle a échoué).Comme les guides officiels expliquer (l'emphase est mienne),
Méthodes de vue:
render
vslink_to
render
est également utilisé dans les modèles de vue eux-mêmes. Plutôt que de générer complet d'un document HTML, il est utilisé pour insérer un vue partielle modèle dans une plus grande. Voici le résultat:_nav.html.erb
).render 'nav'
si vous souhaitez inclure la_nav.html.erb
partielle à partir d'un point de vue situé dans le même dossier.render 'shared/nav'
si vous souhaitez inclure la partielle auapp/views/shared/_nav.html.erb
à partir de tout point de vue dans votre projet.link_to
est juste une méthode pratique pour l'insertion de balises d'ancrage (a href
tags) dans vos templates. Ceci est utile parce que beaucoup de l'Url que vous aurez envie de lien vers d'autres pages au sein de votre application, et ces Url peuvent être référencées à l'aide d'objets ou "helper", comme suit:Un
link_to
est utilisé dans un formulaire à l'intérieur des rails, et est une aide pour créer un élément de lien dans le html. Les deux autres ne sont pas utilisés dans les formulaires, mais plutôt sont utilisés dans les contrôleurs.Vous
render
une page si votre contrôleur de la méthode est lié à cette page. E. g. l'appel de "nouveau" doit rendre le " nouvel élément de la page. Ils répondent à la demande qui vient d'être faite.redirect
est utilisé pour exactement ce que la redirection. Par exemple, si vous essayez d'accéder à une page où vous devez vous être connecté, vous rediriger l'utilisateur vers la page de connexion. Ainsi, les redirections fondamentalement pondre une nouvelle demande.link_to sortie standard d'ancrage html=un lien (link_to documentation)
redirect_to est couramment utilisé pour la page de réponses comme la mise à jour et de suppression. Il va prendre les paramètres de la donner et va direct à votre page de façon appropriée.
(redirect_to documentation)
de rendu est utilisé pour le chargement de partiels ou de chargement spécifique .cre des fichiers dans d'autres. (le rendu de la documentation)
Il y a un tas d'exemples sur cette rails de guide, qui explique le rendu et redirect_to. link_to est assez différent de celui de rendu et de redirect_to
Un link_to crée un lien hypertexte vers une URL spécifique, qui apparaît sur le code HTML.
Un redirect_to va décider de l'endroit où vous relier à d', en fonction de certaines options. Par exemple, si quelqu'un est connecté en tant qu'utilisateur, vous pouvez lui montrer sa page paramètres, d'autre redirect_to la page d'accueil.
Un rendu sera d'ouvrir le fichier de rendu, de prendre son contenu et le coller dans le fichier existant, avant d'envoyer le gros morceau pour le destinataire.
Espère que je suis de droite.
De l'officiel Rails guides: