我有一个用rails 3编写的简单静态网站。
该网站有一个名为pages的控制器,每个静态页面都作为视图提供。例如页面/主页,页面/关于,页面/价格等。这一切都很有效。
我现在遇到一个问题,我需要添加一个简单的联系人功能,但我很难在模型/控制器/视图中找到它。
我已经有一个带有联系人视图的页面控制器,该视图有详细地址等。现在我需要在联系人视图中获取消息模型,以便我可以填充模型attirbutes并发送电子邮件。
我/我是否可以在页面控制器中创建一个新的消息模型,如,
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
或者我应该从页面控制器中取出联系人视图并创建名为消息的新控制器吗?
感谢。
答案 0 :(得分:1)
我会有一个名为contact的独立控制器,例如new和create actions
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
你的属性可以是你喜欢的任何东西,显然这只是你能做什么的一个例子