0
我在我的Rails 3.1网站上有一个静态页面。我有一个只有电子邮件属性(电子邮件:字符串)的访客模型。我想收集来自我网站访问者的电子邮件。他们会在文本框中输入他们的电子邮件,然后点击提交,然后重定向到一个感谢页面。收集电子邮件在轨道上的静态页面
我可以用资源做这种事情,但我不需要那么多。只是一个提交和一个感谢。
我该怎么做?请为视图和控制器提供代码。
谢谢。
我在我的Rails 3.1网站上有一个静态页面。我有一个只有电子邮件属性(电子邮件:字符串)的访客模型。我想收集来自我网站访问者的电子邮件。他们会在文本框中输入他们的电子邮件,然后点击提交,然后重定向到一个感谢页面。收集电子邮件在轨道上的静态页面
我可以用资源做这种事情,但我不需要那么多。只是一个提交和一个感谢。
我该怎么做?请为视图和控制器提供代码。
谢谢。
使用资源有什么问题?你的访客是资源,为什么不把它当作一个对待呢?
在你的路线:
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| => ...
谢谢!我尝试过,但不明白form_for或form_tag是如何工作的。在收集电子邮件的静态页面中,表单看起来如何?另外,如果VisitorController中的@ visitor.save不必重定向到thankyou.html? – AdamT
<%= form_for Visitor.new do | f | %>应该做的。是的,您也可以redirect_to“thankyou”,但您将无法在thankyou页面中使用@ visitor.email呈现当前用户的电子邮件。 – emrass
谢谢。所以,现在,当我提交表单时,它成功地接收了电子邮件,但将我重定向到localhost:3000/visitor,并向我提供了“模板缺失”消息,指的是“创建”。我如何得到它thankyou.html.haml?另外,不是“资源:访客”吗? – AdamT