2011-11-30 60 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