2016-04-14 9 views
0

私はプロジェクトに取り組んでいます。私は2つのモデルを持っています.1つはUser(Devise)であり、OtherはMerchantです。すべてのアプリケーションユーザーは、ロールに関連付けられたユーザーテーブルに格納されます。 マーチャントパーツの場合。私はいくつかの問題を抱えている。 私は、商人登録を依頼として受け入れています。したがって、マーチャントリクエストアプリケーションを送信するには、ユーザーは自分の電子メールアドレスのみを提供し、アプリケーションはユーザーテーブルをチェックして、電子メールアドレスが登録されているかどうかを確認します。登録されている場合は、「メールアドレスは既に使用されており、ユーザーに登録することを提案します」などのメッセージを送信します。そうでない場合は、メールアドレスをセッションに保存するか、または商人リクエストフォームを表示します。ユーザーはアプリケーションとアプリケーションを送信します。電子メールアドレスと共にすべての入力フィールドは、加盟店のテーブルに格納されます。Railsはユーザーとレンダリングのフォームを探します

私は試しましたが、できませんでした。だから、私にこの仕事をする方法を提案してください。

def create 
    if params[:email] == User.find_by_email(params[:email]) 
     flash[:notice] = "Email address already in use!" 
     redirect_to new_merchant_path 
    else 
     render 'form' 
    end 
end 
+0

ようこそStackOverflow。試したコントローラコードを投稿できますか?あなたはポストのコードで質の高い回答を得る可能性が高いです。 – trh

+0

ありがとう@trh、コントローラコードで質問を更新しました。 –

答えて

0

あなたは近くにいるようです。ない

def create 
    if User.find_by_email(params[:email]) 
    flash[:notice] = "Email address already in use!" 
    redirect_to new_merchant_path 
    else 
    render 'form' 
    end 
end 

があなたのために働くならば、データベースとnilに見つけたとき

User.find_by_email(params[:email]) 

以来

は、ユーザーオブジェクトを返します。 あなたのビューにユーザーを表示する必要がある場合は、結果をインスタンス変数に格納する必要があります。

def create 
    if @user = User.find_by_email(params[:email]) 
    flash[:notice] = "Email address already in use!" 
    redirect_to new_merchant_path 
    else 
    render 'form' 
    end 
end 
+0

その両方の場合、そのレンダリング 'フォーム' –

+0

'params [:email]'の電子メールがデータベースに保存されていることを確認できますか? –

+0

私のデータベースには電子メールがあります –

0

あなたがしたいことはこれだと思います。

def create 
    if (@user = User.find_by(email: params[:email])) 
    flash[:notice] = "Email address already in use!" 
    redirect_to new_merchant_path 
    else 
    render 'form' 
    end 
end 

次に、あなたがあなたのform.html.erb

+0

それは働いていません。他の解決策はありますか?他のロジックはjQueryなどを使用しています。 –

0
if params[:email] == User.find_by_email(params[:email]) 

に@user変数を使用することができます。この行は、あなたがそれだと思う何をしていません。 params [:email]でデータベース内のユーザーを検索していますが、ユーザー全体のオブジェクトをparams [:email]と比較しています。

def create 
    #this returns true or false 
    if User.exists?(email: params[:email]) 
    flash[:notice] = "Email address already in use!" 
    redirect_to new_merchant_path 
    else 
    render 'form' 
    end 
end 
+0

動作しません。どちらの場合も、そのレンダリングフォーム –

関連する問題