2012-01-24 15 views
1

JavaScriptを使用していないユーザーのために正常に機能しないウェブサイトがあります。 JavaScriptを使用していないユーザーの場合、コントローラーはHTML付きのフォーム送信に応答します。 javascriptを使用するユーザーの場合は、AJAXフォームが送信されます。これは、コントローラで作成する方法である:AJAXコールの後にフラッシュメッセージが表示されないようにすることはできますか?

if [email protected] 
     flash[:error] = array_to_list(@goal.errors.full_messages) 
    else 
     flash[:success] = "Your goal was successfully added." 
    end  

    respond_to do |format| 
     format.html { redirect_to :action => "show"} 
     format.js 
    end 

私は、ユーザーがJavaScriptを有効にしている場合、ユーザーがすでにそれを扱った後にそれが表示されますので、フラッシュにそれらのメッセージを入れたくありません。 Railsにフラッシュメッセージを表示するように指示する方法はありますか? htmlで応答する場合は?

答えて

4

あなたはこれを達成するために、あなたのformat.htmlブロックにコードのflashビットを置くことができます。

はたぶん、このような何か:

@goal.save 

respond_to do |format| 
    format.html do 
    if @goal.errors 
     flash[:error] = array_to_list(@goal.errors.full_messages) 
    else 
     flash[:notice] = "Your goal was successfully added." 
    end 
    redirect_to :action => "show" 
    end 

    format.js 
end 

あなたはあなたにもAJAX要求とエラーメッセージのいくつかの種類を持っている場合がありますことを考えたことはありますか?あなたのAJAXリクエストが何らかの理由で中断して、ものが保存されない場合は、良い考えかもしれません。

関連する問題