我有一个模特 - 旅行,我想在模特展示页面内创建一个联系表格。
我一直试图解决这个问题,但没有运气,下面的方法可能不是最好的,但我不是铁杆专家。所以非常感谢你的帮助!
所以我创建了一个模型 - message.rb
class Message < ActiveRecord::Base
belongs_to :trip
end
message_controller.rb
def new
@message = Message.new
end
def create
@message = Message.new(params[:message])
if @message.save?
NotificationsMailer.new_message(@message).deliver
redirect_to(root_path, :notice => "Message was successfully sent.")
else
render :new
end
end
end
邮件程序 - message_mailer.rb
class MessageMailer < ActionMailer::Base
default to: "emils.veveris@thrillengine.com"
def send_message(message)
@message = message
mail( :subject => @message.subject, :from => @message.email )
end
end
直到现在这一切都正常(保存新邮件时,我会收到一封电子邮件)
但就像我上面提到的那样 - 我需要将此消息模型添加为另一个模型的嵌套属性 - 跳转。
Trips.rb
has_many :messages
accepts_nested_attributes_for :messages
和旅行显示页面
<%= form_for :messages , :url => messages_path(@message), :html => {:method => :post} do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :subject %><br />
<%= f.text_field :subject %>
</div>
<div class="field">
<%= f.label :message %><br />
<%= f.text_area :message %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
路线
match "trips/:id", :via=>:post, :controller=>"messages", :action=>"create"
但是当我提交联系表单时,我得到: MessagesController中的ArgumentError #create 发送消息所需的发件人(Return-Path,Sender或From)
你能告诉我我做错了吗?
感谢您的帮助!
更新:
我仍然没有让这个工作,我被卡住了。但根据类似问题的答案,我对路线和形式有疑问。因为当我填写它时,它不会创建新邮件,因此它不会向我的收件箱发送任何电子邮件。
有什么建议吗?
感谢您的时间!