设计多步骤表格进行注册

时间:2015-10-11 22:12:27

标签: ruby-on-rails devise

我希望用户能够分两步注册,因为我有很多字段。理想情况下,第一步是接受电子邮件和密码。当用户输入时,他们可以继续填写下一步。

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
    <%= devise_error_messages! %>

<div class="field">
  <%= f.label :first_name %>
  <%= f.text_field :first_name, autofocus: true %>
</div>

<div class="field">
  <%= f.label :last_name %>
  <%= f.text_field :last_name %></br>
</div>

<div class="field">
  <%= f.label :city %>
  <%= f.text_field :city %>
</div>

<div class="field">
  <%= f.label :address %>
  <%= f.text_area :address %>
</div>

<div class="field">
  <%= f.label :gender %>
  <span class="option">Male</span><%= f.radio_button :gender, "m" %>
  <span class="option">Female</span><%= f.radio_button :gender, "f" %></br>
</div>

<div class="field">
  <%= f.label :mobile_no %></br>
  <%= f.telephone_field :mobile_no %>
</div>

<div class="field">
  <%= f.label :website %>
  <%= f.url_field :website %>
</div>

<div class="field">
  <%= f.label :email %>
  <%= f.email_field :email %>
</div>

<div class="field">
  <%= f.label :password %>
  <% if @validatable %>
      <em>(<%= @minimum_password_length %> characters minimum)</em>
  <% end %><br />
  <%= f.password_field :password, autocomplete: "off" %>
</div>

<div class="field">
  <%= f.label :password_confirmation %>
  <%= f.password_field :password_confirmation, autocomplete: "off" %>
</div>

<div class="field">
  <%= f.label :skills %>
  <%= f.text_field :skills %>
</div>

<div class="field">
  <%= f.label :passion %>
  <%= f.text_field :passion %>
</div>

<div class="field">
  <%= f.label :description %>
  <%= f.text_area :description %>
</div>
<% end %>

我尝试了用户输入电子邮件和密码的方法,然后将其重定向到编辑页面,以便更新其他字段。

class RegistrationsController < Devise::RegistrationsController
    def after_sign_up_path_for(resource)
      redirect_to edit_user_path(resource)
    end
end

的routes.rb

devise_for :users, :pro, :amateur, controllers: { registrations: "registrations" }

但是,重定向似乎不起作用。我也试过after_inactive_sign_up_path_for,因为我使用的是可确认的,但仍无效。

我似乎无法弄清楚为什么这可能也是我想知道是否有任何其他方法而不使用任何宝石?

1 个答案:

答案 0 :(得分:0)

如果您只对用户界面感兴趣,可以使用javascript。或者,如果您要保存所有信息非常重要,则可以将表单拆分为部分并覆盖设计注册控制器以呈现这些单独的部分。

您还需要添加与用户模型中的部分链接的步骤。我想如果你使用了宝石,这可能是它将为你做的主要部分。

如果有一个没有任何宝石的多步形式,这是一个很棒的railscast。唯一的区别是你需要覆盖设计中的create方法