2014-11-24 2 views
0

비밀번호를 설정하여 계정을 활성화 할 때 사용자에게 전자 메일을 보내는 작동 방법이 있지만 어떤 이유로 작동하지 않습니다 역할 정수가 2 인 사용자에게 보내는 티켓 모델 메소드. 티켓이 작성되었지만 after_create : method_name을 사용하여 이메일을 보내지 못하는 것 같습니다.사용자가 새 티켓을 제출할 때 관리자에게 전자 메일을 보내지 않습니다.

ActionMailer에서 문제가 될 수있는 생성 된 오류 코드 인 것처럼 보이는 오류가 하나 있지만 그 대가로 모든 것을 진단하기가 어렵습니다.

도움을 주시면 대단히 감사하겠습니다. 미리 감사드립니다!

# /mailers/user_mailer.rb 
################################# 
def new_ticket(ticket) 
    @ticket = ticket 
    mails = User.where(:role => 2) 
    mail(:to => '[email protected]', :bcc => mails, subject: "New Ticket Submitted by: #{@user.email}") 
end 


# /models/ticket.rb 
################################# 
class Ticket < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :category 
    belongs_to :ticket_status 
    has_many :comments, :dependent => :destroy 

    validates_presence_of :title, presence: true 
    validates_presence_of :description, presence: true 
    validates_presence_of :user_id, presence: true 
    validates_presence_of :category_id, presence: true 
    validates_presence_of :ticket_status_id, presence: true 

def after_create 
    send_ticket_notifier 
    super 
end 

private 
def send_ticket_notifier 
    UserMailer.new_ticket(@ticket).deliver 
end 

end 

콘솔

SQL (0.4ms) INSERT INTO "tickets" ("category_id", "created_at", "description", "ticket_status_id", "title", "updated_at", "user_id") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id" [["category_id", 5], ["created_at", "2014-11-24 00:25:53.892400"], ["description", "asdfasdf"], ["ticket_status_id", 8], ["title", "asdfasd"], ["updated_at", "2014-11-24 00:25:53.892400"], ["user_id", 25]] 
(14.6ms) COMMIT 
Redirected to http://localhost:3000/tickets 
#<ActiveModel::Errors:0x00000007230d28 @base=#<Ticket id: 30, title: "asdfasd", description: "asdfasdf", user_id: 25, category_id: 5, created_at: "2014-11-24 00:25:53", updated_at: "2014-11-24 00:25:53", ticket_status_id: 8>, @messages={}> 
Completed 302 Found in 23ms (ActiveRecord: 15.6ms) 

답변

0

잘 일부 시험 후하고 내 생각에 너무 많이 가고 있었다 밝혀 오류가 발생했습니다. 위의 내용이 새로운 사용자 등록에 왜 작동하지만 새 티켓 제출에 대한 것이 아닌지에 대한 명확한 설명은 훨씬 더 좋은 대답이 될 것입니다.

다음은 ActionMailer를 사용하여 작동시키는 방법입니다. admin_mailer.rb 파일을 새로 만들고 ticket.rb의 after_create 및 send_ticket_notifier를 제거했습니다.

# /mailers/admin_mailer.rb 
###################################### 
def new_ticket(ticket) 
    @ticket = ticket 
    mail(to: '[email protected]', subject: "New Ticket Submitted") 
end 


# /controllers/tickets_controller.rb 
###################################### 
def create 
    @ticket = Ticket.new(ticket_params) 
    if @ticket.save 
    AdminMailer.new_ticket(@ticket).deliver 
    redirect_to tickets_path, :notice => "Ticket Submitted." 
    else 
    redirect_to tickets_path, :alert => "Unable to submit ticket." 
    end 
    puts @ticket.errors.inspect 
end 


# /views/admin_mailer/new_ticket.html.erb 
###################################### 
<!DOCTYPE html> 
<html> 
    <head> 
    <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' /> 
    </head> 
    <body> 
    <h1>New Ticket <%= @ticket.id %></h1> 
    <strong><%= @ticket.user.name %></strong> 
    <p>Ticket Title: <%= @ticket.title %></p> 
    <p>Ticket Description: <%= @ticket.description %></p> 
    </body> 
</html> 
관련 문제