0

我有一个用 rails 3 编写的简单静态网站。

该站点有一个称为页面的控制器,每个静态页面都用作视图。例如页面/主页、页面/关于、页面/价格等。这一切都很好。

我现在遇到了一个问题,我需要添加一个简单的联系方式功能,但我正在努力让我的头脑了解模型/控制器/视图。

我已经有一个带有contactus 视图的页面控制器,该视图具有详细地址等。现在我需要以某种方式将消息模型放入contactus 视图中,以便我可以填充模型属性并发送电子邮件。

我可以/我应该从 Pages Controller 中创建一个新的消息模型吗?

  class PagesController < ApplicationController

  def contact

   def new
    @message  = Message.new
   end

   def create
     @message = Message.new(params[:message])
     if @message.valid?
      # TO DO send message here using OS mail program.

      redirect_to root_url, notice: "Message sent! Thank you for contacting us."
     else
       render "new"
     end  
    end
  end

  def about

  end

  def products

  end

  def portfolio

  end

  def services

  end

end

或者我应该从 pages 控制器中取出 contactus 视图并制作名为 messages 的新控制器?

谢谢。

4

1 回答 1

1

我会有一个单独的控制器,称为联系人,例如使用 new 和 create 操作

def new
@message = Message.new
end

def create
@message = Message.new(params[:message])
if @message.valid?
  NotificationsMailer.new_message(@message).deliver
  redirect_to(root_path, :notice => "Message was successfully sent.")
else
  flash.now.alert = "Please fill all fields."
  render :new
end
end 

end

然后是一个单独的模型来处理您的消息

 class Message 
 include ActiveModel::Validations
 include ActiveModel::Conversion
 extend ActiveModel::Naming

 attr_accessor :name, :email, :subject, :body, :file

 validates :name, :email, :subject, :body, :presence => true
 validates :email, :format => { :with => %r{.+@.+\..+} }, :allow_blank => true

 end

你的属性可以是你喜欢的任何东西,显然这只是你可以做的一个例子

于 2013-01-17T15:08:05.313 回答