Tu peux essayer de garder les attributes du post dans session dans un
before_filter *avant* :authenticate_user!. Après le login tu redirect_to
new_post_url, et tu remplis le formulaire avec les données que tu as
gardées dans la session. De cette façon l'user n'aura que cliquer sur
"Envoyer" encore une fois.
class ApplicationController
def after_sign_in_path_for(resource)
session.delete(:return_to) || root_url
end
end
class PostsController < ApplicationController
before_filter :store_post_attributes_and_return_to, only: [:create]
before_filter :authenticate_user!, only: [:create, :edit, :update,
:destroy]
def new
@post.attributes = session[:post_attributes]
end
...
private
def store_post_attributes_and_return_to
session[:post_attributes] = params[:post]
session[:return_to] = new_post_url
end
end
j'ai pas testé cet code, mais je crois que ça devrais fonctioner.
désolé pour mon mauvais français :D
Francis
2013/2/14 oto iashvili <[email protected]>
> salut
>
> J'utilise Devise et Cancan
>
> mon modèle
>
> class PostsController < ApplicationController
> before_filter :authenticate_user!, only: [:create, :edit, :update,
> :destroy]
> ...
> end
>
> un utilisateur non identifié peut accéder au formulaire "new post".
> Maintenant,
> lorsque l'utilisateur non identifié valide un formulaire "new post" ou
> "edit post", il est redirigé vers le formulaire d'identification. Mais
> quand il se connecte, son post n'est pas enregistré dans la base de
> données. Y a t-il quelquechose à faire, comme un callback ou autre, si je
> veux que le post soit enregistré ?
>
> merci
>
> --
> --
> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
> Google Groups.
> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
> [email protected]
> Pour résilier votre abonnement envoyez un e-mail à l'adresse
> [email protected]
> ---
> Vous recevez ce message, car vous êtes abonné au groupe Google
> Groupes Railsfrance.
> Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le
> concernant, envoyez un e-mail à l'adresse
> [email protected].
> Pour plus d'options, visitez le site
> https://groups.google.com/groups/opt_out .
>
>
>
--
--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse
[email protected]
---
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes
Railsfrance.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant,
envoyez un e-mail à l'adresse [email protected].
Pour plus d'options, visitez le site https://groups.google.com/groups/opt_out .