Je suis en train de mettre à jour la valeur d'un attribut virtuel mais cela n'est pas reflété dans l'instance du modèle.La valeur de mise à jour de l'attribut virtuel dans la vue ne met pas à jour le modèle
Par exemple:
MyModel.erb
attr_accessor_with_default :hello_world, false
View.html.erb
<%= @mymodel.hello_world %><br/>
<%
if (@mymodel.hello_world == false)
@mymodel.hello_world = true
end
%>
<%= @mymodel.hello_world %>
La vue des sorties:
false
true
Cependant, quand je la recharge page le même ou tput est montré, quand il devrait être:
true
true
Je vois le comportement ci-dessus dans un formulaire d'édition. Lorsque je soumets le formulaire (avec des erreurs de validation), il se recharge (affichant des erreurs) mais la valeur de hello_world n'est pas mise à jour.
Avez-vous des suggestions? Que dois-je faire pour obtenir le comportement souhaité?
Cela me semble correct. Pourquoi vous attendez-vous à ce que la page rechargée affiche true, true. Le rechargement est une requête complètement nouvelle avec une toute nouvelle instance de @mymodel –
Salut Steve, merci pour votre commentaire. Comment suggéreriez-vous que j'obtienne le comportement dont j'ai besoin? Utilisez la session? – amaseuk
Si vous souhaitez conserver l'état entre les demandes et que vous ne souhaitez pas conserver les données sous une forme de stockage permanent, la session est la solution. –