请原谅这个简单和冗长,但我有一个小测试应用程序,它有一个用户表,有姓名、电子邮件和薪水属性。我创建了一个邮件程序,它将根据我的判断向特定用户发送此数据的报告,换句话说,当我单击一个按钮时。我的按钮是使用 link_to 创建的,并在我的主 users_controller 中调用一个动作,然后调用邮件程序动作。(我希望这是有道理的)。它看起来像下面这样,并且正如我所希望的那样工作;我只是想知道这是否是做这样的事情的正确方法:
在我的 users_controller (由脚手架生成器创建)中:
def sendemail
@user = User.find(params[:id])
UserMailer.welcome_email(@user).deliver
redirect_to user_path(@user)
flash[:notice] = 'Email has been sent!'
end
在 user_mailer.rb 文件中:
def welcome_email(user)
@user = user
@url = "http://example.com/login"
mail(:to => user.email,
:subject => "Welcome to My Awesome Site")
end
在用户的 show.html.erb 页面中,电子邮件是这样发送的:
<%= link_to "Send Email", sendemail_user_path(@user) %>
在我的 routes.rb 文件中,以便一切正常执行(确实如此):
resources :users do
member do
get 'sendemail'
end
所以,说了这么多,它就像它应该的那样工作。我单击用户的 show.html.erb 页面,在该页面中我将获得最终要显示的数据和图表,并且我可以自行决定向该用户发送一封包含这些数据的电子邮件,或者我放入的任何内容mailer.html.erb 文件。当它被发送时,它会闪烁我在控制器中指定的消息,并将我留在那个页面上,就像我指定的那样;所以它正在工作。我只是想知道,这是正确且最 ruby/railsy 的做事方式吗?