5

Xin chào, tôi muốn gửi email đến tất cả địa chỉ email được nhập trong trường văn bản. Tôi có sau bộ điều khiển để làm như vậy.Gửi email đến nhiều địa chỉ email được phân tách bằng dấu phẩy

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 

Nó đã làm việc tốt nhưng bây giờ nó được đưa ra lỗi như sau

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

whats vấn đề xin vui lòng giúp tôi. Cảm ơn bạn

Trả lời

3

Dường như bạn có thể đang tham chiếu một đối tượng nil trong chế độ xem email của mình.

Tôi sẽ xem trong chế độ xem của bạn cho hành động UserMailer#invitation_controller và xem nơi bạn tham chiếu username.

Sau đó, khi bạn phát hiện ra, hãy tìm lại đối tượng và tìm hiểu lý do tại sao nil của nó, sau đó thêm một số thử nghiệm xung quanh đó (ví dụ: if current_user.nil? ...).

+0

Xin cảm ơn vì đã trả lời. Tôi nghĩ bạn đúng. Tôi nhận được đăng xuất khi tôi lấy danh sách địa chỉ email và đó là lý do tại sao 'current_user' trở thành không. –

+0

Đó là vì tôi đã sử dụng mẫu html bình thường thay vì thẻ form_for của đường ray. Việc sử dụng thẻ form_for sẽ tự động bao gồm mã thông báo ứng dụng của bạn trong biểu mẫu có tầm quan trọng lớn liên quan đến các vấn đề bảo mật. –

Các vấn đề liên quan