#ruby-on-rails #actionmailer #mailer
#ruby-on-rails #actionmailer #почтовая программа
Вопрос:
Есть идеи, как я могу отправить параметры моей модели на почту?
Вот в чем проблема: у меня есть приложение cardealler и в car.показать страницу Я создал ссылку под названием «Отправить запрос электронной почты»
<%= link_to 'Send email request', send_to_mail_car_path(@car) %>
в cars_controller:
def send_to_mail
CarMailer.request_email(@car).deliver
@car = Car.find(params[:id])
@search = Car.search(params[:search])
redirect_to @car, :notice => "Notification sent."
end
это работает, я получаю письма от клиентов (это был бы я, потому что приложение находится на стадии разработки).. но я получаю это письмо, пока в этих 2 файлах есть только обычный текст:
request_email.html.erb
и request_email.text.erb
когда я пытаюсь добавить некоторые данные о машине, это выдает ошибки.. итак, если я напишу в этих файлах:
<%= @car.id %>
таким образом, я могу просматривать идентификатор автомобиля в почте, вместо идентификатора у меня на экране появляется эта ошибка:
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
4: <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
5: </head>
6: <body>
7: <h1> <%= @car.id %></h1>
8: <p>
в руководстве user.confirm_registration используется также так <%= user.name %> и мне удалось получить имя пользователя по почте.. Тогда почему я не вижу свою машину в своем приложении?
Любая помощь будет оценена. Некоторые учебные пособия могут быть .. спасибо.
Ответ №1:
Проблема здесь:
CarMailer.request_email(@car).deliver
@car = Car.find(params[:id])
Вы должны назначить @car
, прежде чем сможете его использовать.
@car = Car.find(params[:id])
CarMailer.request_email(@car).deliver
Комментарии:
1. Могу ли я задать вам еще один вопрос об отправке изображений на почту? pictures=assets активы принадлежат автомобилю будет ли это работать так?:
<% for asset in @car.assets %> <%= image_tag(asset.asset.url(:original)) %> <% end %>
2. Выглядит нормально. Однако в Ruby мы обычно используем
@car.assets.each do |asset|
вместоfor asset in @car.assets
.