Ruby on Rails は初めてで、このサイトも初めてです。モデルに設定した検証からのエラーをコントローラーで取得しようとしているので、このエラーが発生したかどうかに応じてフラッシュメッセージを変更できます。
私はこの検証を持っています:
class User < ActiveRecord::Base
attr_accessible :login, :password
validates_presence_of :login , :message => 'Login can't be empty'
validates_presence_of :password ,:message => 'Password can't be empty'
コントローラーに次のコードがあります。
def create
login = params[:username].downcase
password = params[:password]
tuser=User.new(login: login, password: password).save
if(tuser.errors.any?)
flash[:title]='¡Error!'
flash[:notice]='Please verify your data'
else
flash[:title]='¡Success!'
flash[:notice]='Your account was created'
end
そして、html でこのフラッシュ オブジェクトを使用して、ブートストラップ モーダルをレンダリングしています。
<% if flash[:notice] %>
<div class="modal hide fade" id="modal">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">× </button>
<h3><%= flash[:title] %></h3>
</div>
<div class="modal-body">
<%= flash[:notice] %>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
</div>
</div>
問題はコントローラーで発生し、次のエラーが発生します。
NoMethodError in UserController#create
undefined method `errors' for false:FalseClass
flash [notice] エラー メッセージをバリデーションによってスローされたものに変更したいのですが、できません。いくつかのチュートリアルに従いましたが、.html ファイルで @tuser グローバル変数を使用して検証エラー メッセージを取得しており、コントローラーでそれらを処理する必要があります。誰でも私を助けることができますか?
ありがとう