2012-07-15 50 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