236 votes

Params de rails a expliqué ?

Quelqu'un pourrait-il expliquer `` au contrôleur de Rails : d'où ils viennent et ce qu’ils font référence ?

Je voudrais être capable de lire ce code ligne par ligne et comprendre ce qui se passe.

285voto

David Grayson Points 22459

Les params venir à partir du navigateur de l'utilisateur quand ils demande la page. Pour une demande HTTP GET, ce qui est le plus commun, les paramètres sont codés dans l'url. Par exemple, si un utilisateur du navigateur demandé

http://www.example.com/?foo=1&boo=octopus

ensuite, params[:foo] serait "1" et params[:boo] serait "le poulpe".

Dans HTTP/HTML, les paramètres sont vraiment juste une série de paires clé-valeur où la clé et la valeur sont des chaînes de caractères, mais Ruby on Rails a une syntaxe spéciale pour la fabrication de la params être un hachage avec des hachages à l'intérieur. Par exemple, si le navigateur de l'utilisateur demandé

http://www.example.com/?vote[item_id]=1&vote[user_id]=2

ensuite, params[:vote] serait un hash, params[:vote][:item_id] serait "1" et params[:vote][:user_id] serait "2".

Le Ruby on Rails params sont l'équivalent de l' $_REQUEST tableau en PHP.

78voto

hammar Points 89293

Comme d'autres l'ont souligné, params valeurs peuvent venir de la chaîne de requête d'une requête GET, ou la forme de données d'une requête POST, mais il y a aussi un troisième lieu où ils peuvent venir à partir de: Le chemin de l'URL.

Comme vous le savez peut-être, Rails utilise ce qu'on appelle les routes à des demandes directes pour leurs actions de contrôleur. Ces routes peuvent contenir des segments qui sont extraites à partir de l'URL et de mettre en params. Par exemple, si vous avez un itinéraire comme ceci:

match 'products/:id', ...

Alors une requête à l'URL http://example.com/products/42 fixera params[:id] de 42.

50voto

thejaz Points 969

Params contient les trois groupes de paramètres:

  1. Des paramètres fournis par l'utilisateur
    • OBTENIR (http://domain.com/url?param1=value1&param2=value2 sera mis params[:param1] et params[:param2])
    • De POSTE (par exemple, JSON, XML sera automatiquement analysé et stocké dans les params)
    • Remarque: Par défaut, les Rails doubles à l'utilisateur des paramètres fournis et les stocke dans params[:user] si dans UsersController, peut être modifié avec wrap_parameters réglage
  2. Les paramètres de routage
    • match '/user/:id' dans les itinéraires.rb sera mis params[:id]
  3. Les paramètres par défaut
    • params[:controller] et params[:action] "est toujours disponible et contient le contrôleur actuel et de l'action

13voto

Smar Points 2420

Fondamentalement, les paramètres sont spécifiés par l'utilisateur des données de l'application rails.

Lorsque vous validez un formulaire, vous le faites généralement avec une requête POST par opposition à la requête GET. Vous pouvez penser à la normale rails de demandes que d'OBTENIR des demandes, lorsque vous naviguez sur le site, si cela aide.

Lorsque vous soumettez un formulaire, le contrôle est renvoyée à l'application. Comment obtenez-vous les valeurs que vous avez saisies sur le formulaire? params est de savoir comment.

À propos de votre code. @vote = Vote.new params[:vote] crée un nouveau Vote pour la base de données à l'aide de données de params[:voix]. Compte tenu de votre formulaire envoyé par l'utilisateur a été nommée sous le nom de :voter, toutes les données de c'est dans ce :vote champ de la table de hachage.

Deux lignes sont utilisées pour obtenir l'élément et l'uid de l'utilisateur a soumis à la forme.

@extant = Vote.find(:last, :conditions => ["item_id = ? AND user_id = ?", item, uid])

trouve plus récent, ou le dernier inséré, vote à partir de la base de données avec des conditions item_id = point et user_id = uid.

Prochaines lignes, prend le dernier vote du temps et de l'heure actuelle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X