2012-12-03 3 views
0

J'ai une inscription d'utilisateur en trois parties qui fonctionne avec deux modèles distincts: Utilisateur, et Information client. Il y a une inscription d'utilisateur que je soumets à distance, et cela va à la prochaine partie du formulaire. Je veux être en mesure d'utiliser la variable current_user lorsque je soumets la ligne Informations client. Le code suivant fonctionne quand je teste sans télécommande, mais il ne crée même pas la ligne du tout quand je le fais avec la télécommande. Y a-t-il une autre variable que je peux utiliser au lieu de cette variable? Ou y a-t-il une meilleure façon d'accomplir cela?Rails avec Devise - Utilisez current_user après 'remote => true' submit

def create 
    @customer_info = CustomerInfo.new(params[:customer_info].merge(:user_id => current_user.id)) 

    respond_to do |format| 
     if @customer_info.save 
     format.html { redirect_to tasks_url, notice: 'Customer info was successfully created.' } 
     format.json { render json: tasks_url, status: :created, location: @customer_info } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @customer_info.errors, status: :unprocessable_entity } 
     end 
    end 
    end 
+0

En supposant que CustomerInfo 'belongs_to' User, alors il devrait avoir un attribut' user_id', et votre fusion devrait fonctionner. Êtes-vous sûr qu'il est appelé, ET que current_user.id est la bonne valeur? Ajoutez une ligne comme 'logger.debug" current_user est # {current_user.inspect} "' au début de la méthode create, puis regardez dans 'develop.log' pour voir ce que vous obtenez. Je me demande si la méthode create est même appelée ... peut-être que vous devez spécifier la méthode comme POST ou quelque chose? –

+0

Avez-vous ajouté '<% = csrf_meta_tag%>' à votre mise en page? Parce que si vous ne l'avez pas, votre utilisateur sera probablement déconnecté lorsque vous utiliserez 'remote: true' à cause de RequestForgeryProtection – DanneManne

Répondre

1

Il s'avère qu'il s'agissait d'une situation de configuration de l'équipement. Je ne permettais pas aux utilisateurs d'être non confirmés pendant un certain temps, donc "curent_user" restait vide même après leur inscription. J'ai ajouté config.allow_unconfirmed_access_for = 2.days et redémarré le serveur et cela a fonctionné.

Questions connexes