Rails existe - il un moyen de mettre à jour un attribut unique?
Je me demandais juste, j'ai un modèle qui, en plus de l'id à partir d'autres modèles (FK), il a un seul attribut boolean
. Je veux savoir comment puis-je créer un bouton qui change de ce boolean
et juste que
Mon modèle en question est celui-ci:
class Squad
belongs_to :player
belongs_to :team
end
Je veux créer un bouton sur le team#show
page de sorte que le player
propriétaire de cette team
pouvez modifier le boolean
de squad
. Comment puis-je faire et comment pourrait ressembler mon contrôleurs?
Merci :)!
-Edit-
Je suis en utilisant un lien comme ceci:
<%=link_to("Change status", squad_path(sqd, :status => true), :method => :put, :confirm => "Sure?")%>
Où sqd
est une part de ma requête. Est ce lien de mal?
OriginalL'auteur Samth | 2011-05-22
Vous devez vous connecter pour publier un commentaire.
dans votre contrôleur (il est assez commun)
.update_attributes[:squad] ne serait pas de travail!!
Sanghi, oui, c'est juste une faute de frappe, bien sûr, et ce n'est pas le point de la réponse
Je pense que le point de la question était de savoir comment mettre à jour un seul attribut sur un modèle non plusieurs. Quel que soit content que l'affiche ont la solution. 🙂 cheers
la réponse m'a aidé à comprendre mon erreur. Je l'ai fait sans la méthode dans le contrôleur.
<% boolval_state = modelname.boolval ? "Y" : "N"; boolval_flip = modelname.boolval ? false : true; %>
<%= link_to boolval_state, modelname_path(modelname, "modelname[boolval]" => boolval_flip), method: :put %>
OriginalL'auteur fl00r
Oui, il est. La méthode est appelée "update_attribute". Elle prend deux arguments, le nom du champ et la valeur.
Basée sur la mise à jour question
OriginalL'auteur Aditya Sanghi
Quel est le nom de vos attributs ?
Car elle appartient à
player
, vous pouvez y accéder avecplayer.squad.name_of_your_attributes = new_value
. N'oubliez pas desave
votre objet si vous souhaitez que les modifications soient enregistrées dans votre base de données.Aussi, vous avez pu lire que
EDIT: fl00r répondu à votre édité question, pas besoin que je le répète ce qu'il a écrit.
OriginalL'auteur Lucas