使用Wicked with Devise

时间:2014-11-22 03:00:46

标签: ruby-on-rails ruby-on-rails-4 devise

尝试整合两者是一场噩梦。

更新

UsersController.rb

class UserStepsController < ApplicationController
  include Wicked::Wizard
  steps :confirm_password

  def show
    render_wizard
  end

  def update
    render_wizard
  end

end

RegistrationsController(设计)

class RegistrationsController < Devise::RegistrationsController
 def new
  super
 end

 def create
  super
 end

 protected
    def users_steps_path(resource)
        '/user_steps'
    end
end

confirm_password.html.erb(查看)

<%= form_for @user, url: wizard_path do |f| %>
  <%=  f.password_field :password_confirmation  %>

  <%= f.submit "Change Password" %>
<% end %>

的routes.rb

  resources :user_steps

registrations / new.html.erb(注册)

<div class="styled email-input2">

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

<div><%= f.email_field :email, autofocus: true, placeholder: "Email", class: "email-input"  %></div>

<div><%= f.text_field :username, autofocus: true, placeholder: "Username", class: "email-input"  %></div>

<div><%= f.password_field :password, autocomplete: "off", placeholder: "Password", class: "email-input"  %></div>

<div><%= f.password_field :password_confirmation, autocomplete: "off", placeholder: "Password confirmation", class: "email-input"  %></div>


</div>
  <div class="get_motivated2">
     <%= f.submit "Sign up", class: "get_motivated btn-danger" %>
    <% end %>
  </div>


</div>

这是我到目前为止所做的事情,但是当我用设计注册时,它只是登录我。它没有进入:confirm_password步骤。不知道我在这里做错了什么,我已经跟踪了关于railscasts的Ryan Bates教程,但是他并没有使用Devise,这让我有些失望。

1 个答案:

答案 0 :(得分:1)

我假设您要做的是:在用户填写注册表单(此步骤中尚未创建用户记录)后,用户将被重定向到再次确认其密码的页面她的用户帐户已创建。

当您将注册表单提交到registration_path(resource_name)时,设计将创建一个新的用户记录并让您登录。您应该提交所有用户信息以创建用户帐户的位置在confirm_password.html.erb。提交注册表单应该只存储数据(这由wicked完成)并将用户重定向到密码确认页面。

希望这有帮助。