1

我是一个三周大的 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 %>

我以前从来没有问过像这样征求意见的问题,所以我希望这是一个合适的地方。任何和所有的帮助表示赞赏。

4

3 回答 3

2

我认为您正在尝试创建一个“多步”表单...关于它有一个非常好的 railscast:http ://railscasts.com/episodes/217-multistep-forms?view=asciicast

但是,您可能会遇到一些验证问题,因为您需要单独验证每个步骤。所以,也看看这里: http: //guides.rubyonrails.org/active_record_validations_callbacks.html#conditional-validation

我希望它有帮助...

于 2012-07-15T16:38:12.047 回答
1

你最好使用 Devise 进行用户管理。 https://github.com/plataformatec/devise 这是一个 railscast 教程。 railscasts.com/episodes/209-introducing-devise

于 2012-07-15T16:26:09.687 回答
0

如果您正在执行多步骤,则始终可以将信息从一页传递到另一页。您可以将其存储在会话数组中,将其重新发布到其他页面,甚至制作一个 cookie。

请记住在 https 下也执行此操作的每一步,因为创建帐户需要敏感信息。

如果 Rails 是你的第一个,我实际上会推荐一些较低级别的东西,比如 PHP,这样你就可以在开始使用像 rails 这样的高级框架做事情之前了解一切是如何工作的。MVC 通常不是 Web 开发中最好的第一步,尽管它比从头开始做任何事情都强大且容易。

于 2012-07-15T16:52:32.597 回答