我已经设置了Rails 4 ActionMailer,以便在新用户注册时向我(作为网站管理员)发送电子邮件(注册#create - 我正在使用Devise)。
现在我希望current_user能够通过电子邮件发送他们当前正在查看其个人资料的用户。因此,在users#show
我希望有一个表单,只需生成一封电子邮件:to @user.email
,:from current_user.email
(可选择通过文本输入覆盖),也可能是邮件的正文。< / p>
信息记录并不重要。对于这个实现,我让用户的收件箱处理所有历史记录。事实上,如果可以通过模型/控制器传递数据,我宁愿不存储该数据。如果添加正文必须使用MessagesController
,那么我宁愿把它留下来。
非常感谢。
答案 0 :(得分:0)
从RYAN http://railscasts.com/episodes/326-activeattr?view=asciicast
查看此railscast这就是你所需要的一切
答案 1 :(得分:0)
<%= form_for(Message.new) do |f| %>
<div class="form-inputs">
<%= f.text)area :message %>
</div>
<%= f.hidden_field :sender_email, value: current_user.email %>
<%= f.hidden_field :receiver_email, value: @user.email %>
<div class="form-actions">
<button type="submit">Email</button>
</div>
<% end %>
您的消息模型将如下所示
class Message
include ActiveModel::Model
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
def persisted?
false
end
end
消息控制器
class MessagesController < ApplicationController
def create
@message = Message.new(params.require(:message).permit(:sender_email, :receiver_email, :message))
if @message.valid?
MessageMailer.send_message(@message).deliver
redirect_to profile_url, notice: "Message sent"
else
render :new
end
end
end
class MessageMailer < ActionMailer::Base
def send_message(message)
@body = message.message
@from = message.sender_email
@to = message.receiver_email
mail to: @to, :subject => "new mail", :from => @from
end
end
以上代码未经测试希望它能满足您的需求