ContacUs页面的rails控制器模型视图建议



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

站点有一个名为pages的控制器,每个静态页面都作为视图。例如pages/home、pages/about、pages/prices等。

我现在遇到了一个问题,我需要添加一个简单的触点功能,但我正在努力让我的头绕模型/控制器/视图。

我已经有一个带有contactus视图的页面控制器,该视图有详细信息地址等。现在我需要在contactus视图中添加一个消息模型,这样我就可以填充模型属性并发送电子邮件。

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

  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的新控制器吗?

谢谢。

我将有一个单独的控制器叫做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

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

相关内容

  • 没有找到相关文章

最新更新