Я новичок в ror, и у меня возникла проблема с моим приложением:
У меня есть модель заявки и модель комментария,
class Ticket < ActiveRecord::Base
attr_accessible :content, :title, :user, :priority, :category, :status
validates_presence_of :content, :title, :category
has_many :comments, dependent: :destroy
accepts_nested_attributes_for :comments
end
class Comment < ActiveRecord::Base
attr_accessible :content, :ticket_id, :user
belongs_to :ticket
end
Теперь я хочу отправить письмо при создании комментария: В контроллере комментариев:
def create
@comment = Comment.new(params[:comment])
respond_to do |format|
if @comment.save
TicketMailer.ticket_commented(@comment).deliver
format.html { redirect_to @comment, notice: 'Comment was successfull created.' }
format.json { render json: @comment, status: :created, location: @comment }
else
format.html { render action: "new" }
format.json { render json: @comment.errors, status: :unprocessable_entity }
end
end
end
Затем в почтовой программе:
class TicketMailer < ActionMailer::Base
default from: "helpdesk@testing.com"
def ticket_commented(comment)
@comment = comment
@ticket = Ticket.find_by_id(@comment.id)
mail(:to => @comment.user, :subject => 'New comment')
end
end
Но когда я пытаюсь позвонить
<%= @ticket.title %>
В виду, я получил эту ошибку: undefined method
title 'for nil: NilClass`
Я сделал что-то не так? Или как правильно передать @ticket в почтовик?
1 ответ
В почтовой программе вы пытаетесь найти тикет, указав идентификатор комментария, измените строку @ticket = Ticket.find_by_id(@comment.id)
на @ticket = @comment.ticket
Похожие вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.