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
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? –
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