我是Rails noob,从显示页面发送电子邮件时遇到问题。有几个联系表单教程,但我找不到一个我从一个页面发送电子邮件,如'显示'页面。我相信我的路线有很大的错误。在模型中,我声明用户有多个促销活动,在促销展示页面上,我想允许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上找不到类似的东西,我已经尝试了好几天。谢谢!
答案 0 :(得分: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
你们都很好
答案 1 :(得分:1)
有一些优秀的屏幕演员(通过Railscast)关于发送电子邮件http://railscasts.com/?tag_id=28。
最后一点,不要将您的邮件发送方法附加到show动作(如果您当前正在进行),原因是show action仅用于查看某些内容而用户可能正在刷新该页面,因此如果您附加邮件程序为此,邮件可能每次刷新都会出去。
答案 2 :(得分:0)
def quote_mail(promotion)
@user = user
mail(:to => user.email, :subject => "You have an inquiry homeboy!")
end
从您访问用户变量的位置,我认为应该是促销。