2012-07-15 65 views
1

我是一個三週齡的Rails新手,我有一些我想實現的東西,但不知道如何去做。我正在創建應用程序:Rails高級註冊實施如何?

我希望用戶在新用戶視圖頁面上輸入一些註冊信息,然後當他們單擊提交時,而不是立即創建並保存在數據庫中的用戶,而是我希望他們被帶到第二個網頁,在他們可以創建他們的帳戶之前,他們會被要求進行最終驗證。然後當他們點擊「驗證」並且驗證通過時,該帳戶最終被創建並保存到數據庫。

這對我來說很難,因爲我只知道如何製作基本表格,在這裏輸入信息,點擊提交,並在數據庫中有一個新條目。我不知道如何推遲另一個網頁的「用戶創建」,但一位朋友提到了有關http請求的內容,但我仍然不知道任何內容。我會後的一些到目前爲止我的代碼:

users_controller新的定義:

def new 
    @user = User.new 
    @user.websites.build 
end 

users_controller創建方法:

def create 
    @user = User.new(params[:user]) 
    if @user.save 
    sign_in @user 
    flash[:success] = "Welcome!" 
    redirect_to @user 
    else 
    render 'new' 
    end 
end 

users/new.html.erb報名形式:

<% provide(:title, 'Sign up') %> 
<h1>Sign up</h1> 
<%= render 'shared/error_messages' %> 
<%= form_for(@user) do |f| %> 

    <%= f.label :email %> 
    <%= f.text_field :email %><br/> 

    <%= f.label :password %> 
    <%= f.password_field :password %><br/> 

    <%= f.label :password_confirmation, 'Confirm Password' %> 
    <%= f.password_field :password_confirmation %><br/> 

    <%= f.fields_for :websites do |builder| %> 
    <%= builder.label :url, 'Website URL' %> 
    <%= builder.text_field :url %> 
    <% end %> 

    <%= f.submit "Sign up", :id => 'submit' %> 
<% end %> 

我從來沒有問過這個問題在此之前徵求這樣的建議,所以我希望這是一個正確的問題。任何和所有的幫助表示讚賞。

回答

2

我想你想創建一個「多級」的形式... 有關於它的一個非常好的railscast:http://railscasts.com/episodes/217-multistep-forms?view=asciicast

然而,你可能會面臨一些驗證問題,因爲你需要驗證每一步都單獨進行所以,看看這裏也:http://guides.rubyonrails.org/active_record_validations_callbacks.html#conditional-validation

我希望它可以幫助...

+0

謝謝!多步驟聽起來就像我需要的,我喜歡鐵軌投下視頻。 – knygw 2012-07-15 19:26:53

0

如果你做多步,你總是可以從一個頁面傳遞信息到另一個。您可以將其存儲在會話數組中,將其重新發布到其他頁面,甚至可以創建cookie。

還記得在https下執行此操作的每一步,因爲帳戶創建需要敏感信息。

如果Rails是你的第一個,我會真正推薦一些像PHP這樣的低級別的東西,這樣你就可以在開始使用像rails這樣的高級框架來做東西之前瞭解每件事情是如何工作的。 MVC通常不是Web開發中最好的第一步,即使它比從頭開始做任何事情都強大且容易。

+0

那麼做這件事的最基本的方法是什麼?我將如何更改我的創建操作,以便它不會立即保存? 雖然你給了我一些很好的搜索詞,所以我會研究它。 – knygw 2012-07-15 19:25:25

+0

好吧,我會在會話中存儲我的信息。結帳下面鏈接的軌道,這就是我會做的! – knygw 2012-07-15 19:52:25