Устранение неполадок двухэтапного процесса регистрации вложенной модели

Я хочу инициировать процесс регистрации на моей домашней странице. В конце концов, процесс в идеале должен следовать следующей логике:

user = User.new
user.email = ""
user.password = ""
user.profile = Profile.new
user.profile.info = ""
user.profile.save
user.save

Конечно, я буду использовать вложенные формы моделей. Но есть ли способ разделить это на две части? В части 1 User будет вводить в основном информацию user, а также немного информации profile, а часть 2 будет содержать исключительно информацию «профиля». Затем, когда все сказано и сделано, пользователь перенаправляется в свой профиль пользователя.

Если это возможно, каково общее мнение об этом типе процесса? Во-вторых, мне интересно, может ли кто-нибудь помочь мне понять, как этого добиться. У меня есть все формы вложенных моделей, но должно быть что-то испорчено в моем файле route.rb/контроллерах, что лишает меня опыта.

Вот мой файл route.rb.

get "profiles/show"
get "/profiles/:id" => "profiles#show", :as => "profile"
post "/signup" => "profiles#create", :as => "signup"
get "skip/signup", :to => "users#newskip"
match "skip/profiles/new", :to => "profiles#newskip"
root :to => "users#new"

А вот мои UsersController и ProfilesController соответственно:

*class UsersController < ApplicationController*
  before_filter :authenticate, :only => [:edit, :update]

  def new
    @user = User.new
  end

  def create
    @user = User.new(params[:user])
    if @user.save
      redirect_to signup_path, :notice => 'User successfully added.'
    else
      render :action => 'new'
    end
  end

*class ProfilesController < ApplicationController*
  before_filter :authenticate, :only => [:edit, :update]

  def new
    @user.profile = Profile.new
  end

  def create
    @profile = Profile.new(params[:profile])
    if @profile.save
      redirect_to profile_path(@profile), :notice => 'User successfully added.'
    else
      render :action => 'new'
    end
  end

Может ли кто-нибудь помочь показать мне свет? Я знаю, что Devise — это решение, но я пытаюсь учиться без него. По крайней мере, сначала. Этот предыдущий вопрос/ответ выглядит как потенциальное начало.


person tvalent2    schedule 01.09.2011    source источник


Ответы (2)


Вот Railscast о многошаговых формах. Я думаю, это должно указать вам путь к тому, чего вы пытаетесь достичь.

person alex    schedule 01.09.2011
comment
Да спасибо. На самом деле, похоже, что этот пост SO - это именно то, что я ищу (минус Devise): stackoverflow.com/questions/5825135/. Я хочу, чтобы пользователь зарегистрировался на главной странице, а затем сразу же попал в свой профиль. - person tvalent2; 01.09.2011

Я завершил это, заставив user и profile создать на главной странице Profiles#edit в качестве второго шага с профилем redirect_to.

person tvalent2    schedule 26.09.2011