2016-11-03 19 views
1

レコードを作成中に特定のフィールドに基づいてupdate some other table alsoというポップアップ/メッセージを表示したいとします。RAILS:ポップアップ/警告/メッセージbefore_create

バリデーションやアクションリンクを使用して行う方法はありますか?

私は以下のような何かをしたい:

validates :fieldc, if: :should_update?, message: "Update fielda and fieldb in tablex also" 

bef should_update? 
    fieldc == "req_value" 
end 

私は上記の検証が機能しないと確信しています。しかし、fieldc == req_valueとそのレコードを作成する必要がある場合は、ポップアップを表示したいと思います。それを行う方法はありますか?

ありがとうございました。

EDIT: 私はそれを次のようにすることはできますか?

after_create :update_tablex 
    def update_tablex 
     if self.should_update? 
     flash[:notice] = 'Please update fielda and fieldb in tablex also' 
     else 
     flash[:notice] = 'Record updated successfully.' 
     end 
    end 


def should_update? 
    fieldc == "req_value" 
end 

しかし、Iamは、まだこれは本当にコントローラの問題であり、コントローラではなく、モデルで対処しなければならないNameError (undefined local variable or method 'flash' for #)

+0

あなたがより明確にしてくださいことはできますか?フォームではどういう意味ですか? – Mounika

+0

シンプルにしておくと、新しいアクションを作成する際に、レールモジュールにポップアップメッセージを表示する方法はありますか? – Mounika

答えて

1

を得ます。このモデルは、見たもののロジックやワークフローの進行を制御することは決してありません。最も良い方法は、彼らが何をする必要があるかを示すフラッシュメッセージを設定し、便利なので、それらをtablex編集ビューにリダイレクトすることです。あなたの作成方法で

...

def create 
    ... 
    if @record.save 
    if @record.should_update? 
     flash[:notice] = 'Please update fielda and fieldb in tablex also' 
     redirect_to edit_tablex_path(@record.tablex) 
    else 
     flash[:notice] = 'Record updated successfully.' 
     redirect_to @record 
    end 
    else 
    render :new 
    end 
end 
+0

これは非常にしっかりとしたアプローチです –

+0

次のエラーが表示されます: 'NameError(未定義のローカル変数またはメソッド' flash for ') ' – Mounika

+0

申し訳ありませんが、私の5行目に等号がありません。私は答えを編集しました。 – SteveTurczyn

関連する問題