2011-11-30 59 views
0

我在我的Rails 3.1网站上有一个静态页面。我有一个只有电子邮件属性(电子邮件:字符串)的访客模型。我想收集来自我网站访问者的电子邮件。他们会在文本框中输入他们的电子邮件,然后点击提交,然后重定向到一个感谢页面。收集电子邮件在轨道上的静态页面

我可以用资源做这种事情,但我不需要那么多。只是一个提交和一个感谢。

我该怎么做?请为视图和控制器提供代码。

谢谢。

回答

0

使用资源有什么问题?你的访客是资源,为什么不把它当作一个对待呢?

在你的路线:

resource :visitors, :only => :create # POST to visitor_path to create a visitor 
root_to ... 

在VisitorController

def create 
    @visitor = Visitor.new(params[:visitor]) 
    if @visitor.save 
    render "pages/comingsoon" # or redirect, or render leave empty to render views/visitors/create.html.erb 
    else 
    # ... 
    end 
end 

现在你可以有一个文件视图/页/ comingsoon.html.erb与内容

<h1>Thank you</h1> 
<p>Stored your email address <%= @visitor.email %></p> 

而且为了完整性,新访客的表格:

<%= form_for Visitor.new do |f| => ... 
+0

谢谢!我尝试过,但不明白form_for或form_tag是如何工作的。在收集电子邮件的静态页面中,表单看起来如何?另外,如果VisitorController中的@ visitor.save不必重定向到thankyou.html? – AdamT

+0

<%= form_for Visitor.new do | f | %>应该做的。是的,您也可以redirect_to“thankyou”,但您将无法在thankyou页面中使用@ visitor.email呈现当前用户的电子邮件。 – emrass

+0

谢谢。所以,现在,当我提交表单时,它成功地接收了电子邮件,但将我重定向到localhost:3000/visitor,并向我提供了“模板缺失”消息,指的是“创建”。我如何得到它thankyou.html.haml?另外,不是“资源:访客”吗? – AdamT