Bonjour,

Je fait un clone de twitter pas avec les même design mais le même principe c'est juste pour m'améliorer sauf que pour que les gens ce créer un compte j'ai un problème

Ce que je fais

Je veux que au début du site il y ai un bouton s'enregistrer que l'on clique ça nous ouvre une nouvelle page avec le formulaire d'inscription pour faire l'enregistrement j'ai suivit le model de la connection

Ma fonction register dans mon controller

def register
    @pseudo_use = User.where(pseudo: params[:pseudo])
    if User.where(pseudo: params[:pseudo]).first
      flash[:error] = "Le pseudonyme et déjà pris"
      redirect_to "/users/register"
    else
      User.create(pseudo: params[:pseudo], password: params[:password], role: "utilisateur")
      flash[:info] = "Vous ête bien enregistrer. Merci de bien vouloir vous connecter"
      redirect_to "/"
    end
  end

Mon html du register

<div class="row">
    <div class="col s12">
        <h1>S'enregistrer</h1>
    </div>
</div>

<%= form_tag "/users/register", method: "post" do %>
    <div class="row">
        <div class="input-field col s6">
            <input type="text" name="pseudo">
            <label for="pseudo">Pseudonyme</label>
        </div>
        <div class="input-field col s6">
            <input type="password" name="password">
            <label for="password">Mot de passe</label>
        </div>
        <div class="col s8">
            <button class="btn waves-effect waves-light" type="submit">S'enregistrer
                <i class="material-icons right">send</i>
            </button>
        </div>
        <div class="col s4">
            <h6>Déjà un compte ? <a href="/users/login">connectez-vous</a></h6>
        </div>
    </div>
<% end %>

Ce que j'obtiens

J'obtien pas d'erreur c'est déjà assez cool :) mais quand je clique sur le boutton s'enregistrer il ne vas pas sur la page il s'enregistre direct avec les params nil donc je voudrais savoir comment faire pour qu'il m'affiche la page pour modifier les params grâce a mon jolie tableau :)

PS : J'utilise materialize css

Merci d'avance pour votre aide

9 réponses


Kareylo
Réponse acceptée

Je m'y connais pas plus que ça en Ruby, mais de ce que je comprends, tu vérifies s'il n'y a pas de clef nil dans params.

Après une micro rechercher, je suis tombé sur ce cas :

if (params.has_key?(:pseudo) && params.has_key?(:password))
    if User.where(pseudo: params[:pseudo]).first
        flash[:error] = "Le pseudonyme et déjà pris"
        redirect_to "/users/register"
      else
        User.create(pseudo: params[:pseudo], password: params[:password], role: "utilisateur")
        flash[:info] = "Vous ête bien enregistrer. Merci de bien vouloir vous connecter"
        redirect_to "/"
      end
    end

Ou encore

if !params.empty?
    if User.where(pseudo: params[:pseudo]).first
        flash[:error] = "Le pseudonyme et déjà pris"
        redirect_to "/users/register"
      else
        User.create(pseudo: params[:pseudo], password: params[:password], role: "utilisateur")
        flash[:info] = "Vous ête bien enregistrer. Merci de bien vouloir vous connecter"
        redirect_to "/"
      end
    end

"Vous ête bien enregistrer. Merci de bien vouloir vous connecter"
try again

bon OK; je sais l'orthographe c'est dépassé, SMS toussa ...
mais quand même :(

Je suis désoler mais je vérifi mon orthographe que si c'est des projet sérieux et cela ne répond pas à ma question ;)

PS: toussa s'écrit en réaliter tous ça :p

Bien évidement mon message n'a rien de méchant j'ai un humour juste pas comme les autre ;)

C'est logique, tu ne vérifie pas s'il y a des params dans ta requête POST.

PS : Tout ça.

Salut mais quesque je suis bête défois c'est totalement logique et j'y ai pas pensée :/ merci bien :)

Ca arrive à tout le monde.
Oublie pas de passer le poste en résolu si ton problème est réglé.

J'ai beau lui faire une condition comme quoi les params son nul mais il veux toujours pas ça fait la même chose j'ai l'impression que mon site s'en fou de ma condition la condition je lui ai dit si params est different de nul alors tu execute le code sauf que même si params est nul il execute le code
Je met mon code car j'ai du me tromper :p

if !params[:nil]
      if User.where(pseudo: params[:pseudo]).first
        flash[:error] = "Le pseudonyme et déjà pris"
        redirect_to "/users/register"
      else
        User.create(pseudo: params[:pseudo], password: params[:password], role: "utilisateur")
        flash[:info] = "Vous ête bien enregistrer. Merci de bien vouloir vous connecter"
        redirect_to "/"
      end
    end

Merci ça fonctionne :D

J'ai modifié pour ajouter une autre version, qui devrait être "mieux"