0

jQueryAjaxを介してフォームの本文にエラーメッセージが表示されるポップアップサインインフォームがあります。ローカル環境(PostGresQL、WEBbrick)では正常に動作しますが、Herokuでは動作しません。Herokuでは、ユーザーはエラーメッセージのみを表示する新しいページにリダイレクトされます。つまり、{"error": "Invalid Email Address:testing@test.com"}

ページには実際には2つのサインアップフォームがあります。1つはjQueryダイアログを介してポップアップし、もう1つはページに埋め込まれています。助けてくれてありがとう。

コントローラは次のとおりです。classMailingListController<ApplicationController

 respond_to :json

 def create
   gb = Gibbon.new(Settings.mailchimp.api_key)
   res = gb.list_subscribe({:id => Settings.mailchimp.list_id, :email_address => params[:email]})
   if res == true
     render(:json => {:body => "okay"})
   else
     render(:json => {:error => res["error"]})
   end
 rescue
   render(:json => {:error => "Fatal Error"})
  end
end

これがjsです(コードが重複しているので、動作させようとしています):

  // Mailing List Watcher
 var mailingList2 = $("#mailing-list2");
 if ( mailingList2.length ) {
   mailingList2
     .live("completed", function(e){
     })
     .live("success", function(e){
       var that = this;
       $.cookie("mailingListSubmitted", "true", {expires: 7});
       if(mailingList2.find("#mailing-list2 #status2").length == 0){
         mailingList2
           .find("form input[type='text']")
           .after($("<div></div>").attr({id : "status2"}))
       }
       mailingList2
         .find("form input[type='text']")
           .attr("disabled", true)
           .fadeOut(5000);
       $("#mailing-list2 #status2")
         .text("Email submitted successfully!")
         .effect("highlight", { }, 1000);
     })
     .live("failure", function(e, error){
      if(mailingList2.find("#mailing-list2 #status2").length == 0){
         mailingList2
           .find("form input[type='text']")
           .after($("<div></div>").attr({id : "status2"}))
       }
       $("#mailing-list2 #status2")
         .text(error)
         .effect("highlight", {}, 1000);
     })
     .live("submittal", function(e, emailAddress){
       if ( emailAddress == "" || emailAddress == null ) {
         $(this).trigger("failure", ["You need to specify an email address!"])
         return false;
       }
       var token = $.token();
       $.post("/mailing_list", {email: emailAddress, authenticity_token: token}, function(response, status, xhr){
         if(response.error){
           $(mailingList2).trigger("failure", ["An error occurred: " + response.error]);
         } else {
           $(mailingList2).trigger("success");
         }
       }, "json")
       .error(function(){
         $(mailingList2).trigger("failure", ["An error occurred. Please try again in a few minutes."]);
       });
     });


   mailingList2.find("form").submit(function(){
     emailAddress = mailingList2.find("input[name='email']").val();
     $(mailingList2).trigger("submittal", [emailAddress]);
     return false;
   });

   var mlSetting = $.cookie("mailingListSubmitted");
   if ( mlSetting == "true" ) {
     mailingList2.remove();
   }
 }

 // Mailing List Watcher
 var mailingList = $("#mailing-list");
 if ( mailingList.length ) {
   mailingList
     .live("completed", function(e){
     })
     .live("success", function(e){
       var that = this;
       $.cookie("mailingListSubmitted", "true", {expires: 7});
       if(mailingList.find("#status").length == 0){
         mailingList
           .find("form input[type='text']")
           .after($("<div></div>").attr({id : "status"}))
       }
       mailingList
         .find("form input[type='text']")
           .attr("disabled", true)
           .fadeOut(5000);
       $("#status")
         .text("Email submitted successfully!")
         .effect("highlight", { }, 1000);
     })
     .live("failure", function(e, error){
      if(mailingList.find("#status").length == 0){
         mailingList
           .find("form input[type='text']")
           .after($("<div></div>").attr({id : "status"}))
       }
       $("#status")
         .text(error)
         .effect("highlight", {}, 1000);
     })
     .live("submittal", function(e, emailAddress){
       if ( emailAddress == "" || emailAddress == null ) {
         $(this).trigger("failure", ["You need to specify an email address!"])
         return false;
       }
       var token = $.token();
       $.post("/mailing_list", {email: emailAddress, authenticity_token: token}, function(response, status, xhr){
         if(response.error){
           $(mailingList).trigger("failure", ["An error occurred: " + response.error]);
         } else {
           $(mailingList).trigger("success");
         }
       }, "json")
       .error(function(){
         $(mailingList).trigger("failure", ["An error occurred. Please try again in a few minutes."]);
       });
     });


   mailingList.find("form").submit(function(){
     emailAddress = mailingList.find("input[name='email']").val();
     $(mailingList).trigger("submittal", [emailAddress]);
     return false;
   });

   var mlSetting = $.cookie("mailingListSubmitted");
   if ( mlSetting == "true" ) {
     mailingList.remove();
   }
}
4

2 に答える 2

0

答えはここにあります。以前にこれを読みましたが、これを機能させるには数回の試行が必要でした: https://devcenter.heroku.com/articles/pgbackups#exporting-via-a-backup

于 2012-08-20T21:46:27.053 に答える
0

環境/ production.rb が電子メールを送信するように正しく構成されていません。実際に所有しているドメインとしてメールを送信するように設定されていることを確認する必要があります。RailsHerokuの両方に、このテーマに関する優れた記事があります。

于 2012-08-14T22:23:19.917 に答える