2011-08-11 204 views
5

嗨我想发送电子邮件到在文本字段中输入的所有电子邮件逗号地址。我有这样做的以下控制器。发送电子邮件到多个逗号分隔的电子邮件地址

def send_invites #friend invites 
    @emails_txt = params[:emails_txt] 
    @emails = @emails_txt.split(/\s*,\s*/) 
     @ve = [] 
     @emails.each do |email| 
     if email =~ /\b[A-Z0-9._%a-z-][email protected](?:[A-Z0-9a-z-]+.)+[A-Za-z]{2,4}\z/ 
      @ve << email 
     end 
     end 
@all_ok = true 
@errors = [] 

    @ve.each do |email| 

     @invitation = Invitation.new 
     @invitation.sender = current_user 
     @invitation.recipient_email = email 

     if @invitation.save 
     UserMailer.invitation_notification(current_user, @invitation, new_user_registration_url+"/#{@invitation.token}").deliver 
     else   
     @all_ok = "false" 
     @errors << @invitation.errors  
     end 
    end 
end 

它工作正常,但现在它如下

NoMethodError in InvitationsController#send_invites 
undefined method `username' for nil:NilClass 

什么问题请大家帮我给错误。谢谢

回答

3

看起来你可能在你的电子邮件视图中引用了一个零对象。

我会在您的视图中查看UserMailer#invitation_controller操作,并查看您在哪里引用username

然后,一旦你发现,追溯对象,并找出为什么它的零,然后添加一些测试(即if current_user.nil? ...)。

+0

嘿谢谢你的回复。我想你是对的。当我获取电子邮件地址列表时,我将退出登录状态,这就是为什么'current_user'变为零的原因。 –

+0

这是因为我使用的是正常的html格式,而不是form_for的rails标签。使用form_for标签会自动将您的应用程序令牌包含在对安全性问题非常重要的表单中。 –

相关问题