2016-04-06 16 views
0

自動フォームが正常に送信された後にメールを送信しようとしました。私は動作しなかったtemplate.events 'submit'を使用しようとしました。私はmetermethod = "sendEmail"を使用しようとしました。私がやることは何もないようです。誰かが私が間違っていることを教えてもらえますか?フォーム送信後sendEmail

パス:form.html

{{#autoForm collection="JobOffers" id="jobOfferForm" type="insert" meteormethod="sendEmail"}} 
    <fieldset> 
    {{> afQuickField name='firstName'}} 

    <button type="submit" data-meteor-method="sendEmail" class="btn btn-primary">Submit</button> 
</fieldset> 
{{/autoForm}} 

パス:server/email.js

sendEmail: function (from, subject, userId) { 
    check([from, subject, userId], [String]); 

    // Let other method calls from the same client start running, 
    // without waiting for the email sending to complete. 
    this.unblock(); 

    SSR.compileTemplate('htmlEmail', Assets.getText('html-email.html')); 

    // to find the users info for the logged in users 
    // var user = Meteor.user(); 
    var user = Meteor.users.findOne({ _id: userId }); 
    var email = (user && user.emails[0].address); 

    var emailData = { 
     // name: (candidate && candidate.profile && candidate.profile.firstName), 
     name: (user && user.profile && user.profile.firstName), 

     // favoriteRestaurant: "Honker Burger", 
     // bestFriend: "Skeeter Valentine" 
    }; 

    Email.send({ 
     to: email, 
     from: from, 
     subject: subject, 
     html: SSR.render('htmlEmail', emailData) 
    }); 

    console.log('sendEmail sent'); 
    } 
}); 

UPDATE

パス:form.js

AutoForm.hooks({ 
    jobOfferForm: hooksObject 
}); 


var hooksObject = { 
    after: { 
     insert: function(error, result){ 
      Email.send({ 
       var otheruserId = FlowRouter.getParam('id'); 

       Meteor.call('sendEmail', 
       '[email protected]', 
       'Hello from Meteor!', 
       otheruserId);  
      };   
     } 
    } 
}; 

答えて

1

オートフォームのコールバック/フックを使用できます。次の挿入後に電子メールを送信したい場合は解決策になる:

var hooksObject ={ 
    after: { 
     insert: function(error, result){ 
       //Send email here 
     } 
    } 
} 

はUPDATE:

var hooksObject = { 
    after: { 
    insert: function(error, result){ 
      var otheruserId = FlowRouter.getParam('id'); 

      Meteor.call('sendEmail', 
      '[email protected]', 
      'Hello from Meteor!', 
      otheruserId); 
    } 
    } 
}; 

AutoForm.addHooks('jobOfferForm', hooksObject); 

詳細はautoform documentationを参照してください。

+0

私はあなたの提案を実装しようとしています。私は流星とプログラミングをまだ学んでいるので、知識の欠如を許してください。一般的にフックは私をちょっと混乱させます。私はどこに置いているのか分からない。私はドキュメンテーションを見てきましたが、多くの助けになるとは思っていません。私の更新を見て、私が間違っていることを知らせてもらえますか? – bp123

+0

どのようなエラーメッセージが表示されますか? – Areca

+0

まだ送信できません。 EmailSendの後の行でビルドがクラッシュする – bp123

関連する問題