rails 3 mailer_action

#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 .