0

我是 Rails 菜鸟,从显示页面发送电子邮件时遇到问题。那里有几个联系表格教程,但我找不到一个从“显示”页面之类的页面发送电子邮件的地方。我相信我的路线有很大的错误。在模型中,我声明用户有多个促销,并且在促销显示页面上,我希望允许 current_user 向@user 发送电子邮件。

这里是 app/mailers/quote_mailer.rb

class QuoteMailer < ActionMailer::Base
  default :from => "tim@example.com"

  def quote_mail(promotion)
    @user = user
    mail(:to => user.email, :subject => "You have an inquiry homeboy!")
  end 
end

在promotions_controller 我把这个动作我认为可能是错误的:

def quotedeliver
  QuoteMailer.quote_mail.deliver
  flash[:notice] = 'report sent!'
  redirect_to root_path # or wherever
end

这是我用来发送电子邮件的表格(:url 可能是错误的,但我不知道它应该是什么样子)

<%= form_for quote_mail, :url => quotedeliver_promotion_path(promotion), :html => {:method => :put } do |f| %>
  <%= f.text_area :body %>
  <%= f.submit %>
<% end %>

我很想得到一些帮助。我在stackoverflow上找不到类似的东西,我已经尝试了好几天。谢谢!

4

3 回答 3

2

您可能错过了 config/routes.rb 中的路线

你可以像这样定义它

post '/quotedeliver_promotion' => 'promotions#quotedeliver', :as => quotedeliver_promotion

请注意,quotedeliver 必须重写 quote_deliver 以遵循 ruby​​ 语法约定。你打电话时

QuoteMailer.quote_mail.deliver

你没有给出参数,所以试试这个

QuoteMailer.quote_mail(current_user).deliver

并改变你的方法

def quote_mail(user)
  mail ....
end

你们都很好

于 2012-04-24T05:22:27.633 回答
1

关于发送电子邮件http://railscasts.com/?tag_id=28有一些出色的屏幕截图(通过 Railscasts) 。

最后一件事,不要将您的邮件发送方法附加到显示操作(如果您当前正在执行),原因是显示操作仅用于查看某些内容并且用户可能正在刷新该页面,因此,如果您将邮件附加到该页面,邮件可能会在每次刷新时发出。

于 2012-04-24T05:18:54.503 回答
0
def quote_mail(promotion)
   @user = user
  mail(:to => user.email, :subject => "You have an inquiry homeboy!")
end 

从您访问用户变量的位置,我认为应该是促销。

于 2012-04-24T04:46:33.287 回答