2017-02-10 7 views
0

私は、ユーザーのことを売るという、sellというアクションをトリガーするボタンを作成しています。しかし、ユーザーは、何かを売るために、データベース(User.amount> 0)上に0(物)以上の量を持っていなければなりません。私は、デフォルトのフォームは、ユーザーがいくつかの部分を空白のままにしたときにいくつかのエラーメッセージがあることを知っている。 (赤いメッセージが表示され、次のページに進むことはできません)。私は同様のことをやろうとしています。ユーザーに売りページを表示させず、メッセージを表示させます。コードがなければなりませんどこかのがある後デフォルトのフォームエラーを再作成するにはどうすればよいですか?

def sell 
    team_id = 9 
find_the_specific_row = current_user.user_stocks.find_by team: team_id 

if find_the_specific_row.nil? or find_the_specific_row == 0 

else 
     find_the_specific_row.update(:amount => find_the_specific_row.amount - 1) 
     redirect_to portfolios_path 
    end 
end 

空白:それは私のSELLアクションです。 私はエラーのドキュメントを読みましたが、そのような状況に関連するものは見つかりませんでした。

答えて

0

モデルを操作するときに検証メッセージを再作成する場合は、errors.addメソッドを使用してこれを行うことができます。あなたの場合、何かの行に沿って何か:

find_the_specific_row.errors.add(:amount, :greater_than, count: 0) 

あなたが探しているものかもしれません。これにより、amountフィールドにエラーが追加され、ロケールファイルのエラーセクションで定義したgreater_thanエラーメッセージが表示されます。

次に、これらのエラーメッセージを表示するビューセットアップがあると仮定して、フォームを使用した場合と同様の望ましい結果を得ることができます。

at working with validation errors hereを参照してください。妥当性確認エラーを処理する際に何ができるかについて、より多くの情報を提供してくれることを願っています。

エラーをモデルにリンクしたくない場合は、flashを使用できます。
フラッシュは、ビューに表示されるセッションに保存し、変数であるので、あなたのようなもの書くことができる:

flash[:alert] = "Amount must be greater than 0" 

を、あなたがリダイレクトされている場合は、ビューでフラッシュにアクセスすることができ、フラッシュokですビューをレンダリングする場合は、flash.nowを使用する必要があります。

+0

あなたは私がそれについてもっと読んで、それをもっと好きな方法で使うことができるリンクがありますか?そして、あなたが 'これらのエラーメッセージを表示するためのビュー設定を持っていると仮定すると、あなたはどういう意味ですか?'ビューの上部にある通知フィールドについてですか? – RedManBrasil

+0

@RedManBrasil私は答えがうまくいけばもう少しあなたを助けることができるリンクを追加しました。つまり、モデルのエラーメッセージを表示するためにビューが既に設定されていると思います。エラーメッセージが表示されていれば、これは問題ありません。 –

+0

これはnundに対して_undefinedメソッドの 'errors'エラーを返します。NilClass_ – RedManBrasil

関連する問題