如何创建rails联系表单在模型的显示页面内?

时间:2012-07-03 20:08:40

标签: ruby-on-rails routing sendmail actionmailer contact-form

我有一个模特 - 旅行,我想在模特展示页面内创建一个联系表格。

我一直试图解决这个问题,但没有运气,下面的方法可能不是最好的,但我不是铁杆专家。所以非常感谢你的帮助!

所以我创建了一个模型 - 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)

你能告诉我我做错了吗?

感谢您的帮助!


更新

我仍然没有让这个工作,我被卡住了。但根据类似问题的答案,我对路线和形式有疑问。因为当我填写它时,它不会创建新邮件,因此它不会向我的收件箱发送任何电子邮件。

有什么建议吗?

感谢您的时间!

0 个答案:

没有答案