2016-02-02 2 views
1

Я пытаюсь установить систему с несколькими формами, используя драгоценный камень Wicked. Я разработал и работаю правильно, выполнив следующие шаги: http://railscasts.com/episodes/346-wizard-forms-with-wicked.Многоформатные рельсы с использованием Wicked Gem и Devise

Я не перенаправлен на user_step_paths? все сделано, как указано в учебнике, но, я предполагаю, потому что я использую devise, мне нужно сделать это в контроллере, унаследованном при разработке? мой код ниже для контроллеров:

users_controller.rb

class UsersController < Devise::RegistrationsController 
    def new 
    @user = User.new 
    end 
    def create 
     @user = User.new(params[:sign_up]) 
     if @user.save 
     session[:user_id] = @user.id 
     redirect_to user_steps_path 
     else 
     redirect_to new_user_registration_path 
     end 
    end 
end 

users_steps_controller.rb

class UserStepsController < ApplicationController 

    include Wicked::Wizard 
    steps :education, :social 

    def show 
    render_wizard 
    end 

end 

маршруты

get 'pages/home' 
    devise_for :users, :controllers => { :registrations => 'users'} 
    resources :user 
    resources :user_steps 
+0

Можете ли вы установить, является ли действие сотворения ударил? Попробуйте добавить «повысить» создание пользователя .. »в начале метода create и посмотреть, возникает ли ошибка в браузере. Если да, извлеките его и проверьте, есть ли какие-либо ошибки при попытке сохранить пользователя: «raise @ user.errors.messages». Поместите это непосредственно перед линией redirect_to new_user_registration_path. –

+0

Когда вы пытаетесь отправить форму регистрации, она регистрирует вас? или он показывает какую-либо ошибку? – SsouLlesS

+0

Не могли бы вы добавить свою регистрационную форму? Мне нужно проверить путь, по которому форма отправляет данные. – SsouLlesS

ответ

2

1.Needed метод обновления в контроллере и необходимо определить пользователя в методе показа:

def show 
    @user = current_user 
    render_wizard 
    end 

    def update 
    @user = current_user 
    @user.update_attributes(user_params) 
    render_wizard @user 
    end 

2.Needed для генерации контроллеры DEViSE:

rails generate devise:controllers [scope] 

3.Update registration_controller для завещанию

class Users::RegistrationsController < Devise::RegistrationsController 
# before_filter :configure_sign_up_params, only: [:create] 
# before_filter :configure_account_update_params, only: [:update] 

    # GET /resource/sign_up 
    def new 
    super 
    end 

    # POST /resource 
    def create 
    super 
    end 

    # GET /resource/edit 
    # def edit 
    # super 
    # end 

    # PUT /resource 
    def update 
    super 
    end 

# The path used after sign up. 
    def after_sign_up_path_for(resource) 
    user_steps_path 
    end 

    # The path used after sign up for inactive accounts. 
    def after_inactive_sign_up_path_for(resource) 
    super(resource) 
    end 
end 

4.This контроллер является недействительным, вы должны использовать сгенерированные контроллеры путем разработки:

class UsersController < Devise::RegistrationsController