Я почти закончил процесс регистрации, где:
- (Шаг 1) Новый пользователь заполняет небольшую форму, создавая и пользователя, и профиль
- (Шаг2) Новый пользователь перенаправляется в ProfilesController для заполнения остальной части профиля
- (Шаг 3) Новый пользователь завершает профиль и перенаправляется в свой профиль
Пока что-то не такработает правильно.Я считаю, что я сделал так, чтобы профиль был создан в обоих шагах 1 и 2 выше.(Вроде как этот пост , но мои методы отличаются.)
Может кто-нибудь помочь мне исправить это?
Вот мой код.
ProfilesController:
def new
@profile = Profile.new(params[:profile])
end
def show
@user = User.find(params[:id])
@profile = @user.profile
@superlative = @profile.superlatives.new
end
def edit
@profile = user.profile
end
UsersController:
def new
@user = User.new
@user.profile = Profile.new
if logged_in?
redirect_to current_user.profile
end
end
def create
@user = User.new(params[:user])
if @user.save
session[:user_id] = @user.id
redirect_to signup_path, :notice => 'User successfully added.'
else
render :action => 'new'
end
end
def edit
@user = current_user
end
def update
@user = current_user
if @user.update_attributes(params[:email])
redirect_to profile_path
else
render :action => 'edit'
end
end
Routes.rb:
match "/signup" => "profiles#edit", :as => "signup"
post "/profiles/new" => "profiles#create"
match "skip/signup", :to => "info#signupskip"
match "skip/profiles/new", :to => "profiles#newskip"
get "/profiles/:id" => "profiles#show", :as => "profile"
get "profiles/new"
root :to => "users#new"
resources :users do
resources :profiles
end
Форма № 1 (пользователи # новая форма):
<%= form_for(@user, :html => {:multipart => true, :id => 'homesign'}) do |f| %>
<%= f.hidden_field :id %>
<%= f.label :email %>
<%= f.text_field :email, :size => 38 %>
<%= f.fields_for :profile do |profile| %>
<div id="name">
<%= profile.label :first_name %>
<%= profile.text_field :first_name, :size => 18 %>
</div>
<% end %>
Форма № 2 (профили # новые) форма:
<%= form_for '@user.profile', :html => { :multipart => true } do |f| %>
<%= f.hidden_field :id %>
<table id="signupTable">
<tbody>
<tr>
<td class="label"><%= f.label :gender, "Gender:" %></td>
</tr>
<tbody>
</table>
<% end %>
Если я использую вышеуказанное, я получаю "Не удалось найти пользователя с идентификатором = xx "
Если я изменю вышеуказанный маршрут с:
match "/signup" => "profiles#new", :as => "signup"
На:
match "/signup" => "profiles#edit", :as => "signup"
Я получу" Не могунайти пользователя без идентификатора "
С rake routes
:
profiles_show GET /profiles/show(.:format) {:action=>"show", :controller=>"profiles"}
profile GET /profiles/:id(.:format) {:action=>"show", :controller=>"profiles"}
profiles_new GET /profiles/new(.:format) {:action=>"new", :controller=>"profiles"}
POST /profiles/new(.:format) {:action=>"create", :controller=>"profiles"}
profile GET /profiles/:id(.:format) {:action=>"show", :controller=>"profiles"}
user_profiles GET /users/:user_id/profiles(.:format) {:action=>"index", :controller=>"profiles"}
POST /users/:user_id/profiles(.:format) {:action=>"create", :controller=>"profiles"}
new_user_profile GET /users/:user_id/profiles/new(.:format) {:action=>"new", :controller=>"profiles"}
edit_user_profile GET /users/:user_id/profiles/:id/edit(.:format) {:action=>"edit", :controller=>"profiles"}
user_profile GET /users/:user_id/profiles/:id(.:format) {:action=>"show", :controller=>"profiles"}
PUT /users/:user_id/profiles/:id(.:format) {:action=>"update", :controller=>"profiles"}
DELETE /users/:user_id/profiles/:id(.:format) {:action=>"destroy", :controller=>"profiles"}
users GET /users(.:format) {:action=>"index", :controller=>"users"}
POST /users(.:format) {:action=>"create", :controller=>"users"}
new_user GET /users/new(.:format) {:action=>"new", :controller=>"users"}
edit_user GET /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
user GET /users/:id(.:format) {:action=>"show", :controller=>"users"}
PUT /users/:id(.:format) {:action=>"update", :controller=>"users"}
DELETE /users/:id(.:format) {:action=>"destroy", :controller=>"users"}
У меня также есть следующие маршруты для регистрации:
signup_index GET /signup(.:format) {:action=>"index", :controller=>"signup"}
POST /signup(.:format) {:action=>"create", :controller=>"signup"}
new_signup GET /signup/new(.:format) {:action=>"new", :controller=>"signup"}
edit_signup GET /signup/:id/edit(.:format) {:action=>"edit", :controller=>"signup"}
GET /signup/:id(.:format) {:action=>"show", :controller=>"signup"}
PUT /signup/:id(.:format) {:action=>"update", :controller=>"signup"}
DELETE /signup/:id(.:format) {:action=>"destroy", :controller=>"signup"}
ОБНОВЛЕНИЕ: rake routes
только с resources: users
, resources :profiles
и root.
users GET /users(.:format) {:action=>"index", :controller=>"users"}
POST /users(.:format) {:action=>"create", :controller=>"users"}
new_user GET /users/new(.:format) {:action=>"new", :controller=>"users"}
edit_user GET /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
user GET /users/:id(.:format) {:action=>"show", :controller=>"users"}
PUT /users/:id(.:format) {:action=>"update", :controller=>"users"}
DELETE /users/:id(.:format) {:action=>"destroy", :controller=>"users"}
profiles GET /profiles(.:format) {:action=>"index", :controller=>"profiles"}
POST /profiles(.:format) {:action=>"create", :controller=>"profiles"}
new_profile GET /profiles/new(.:format) {:action=>"new", :controller=>"profiles"}
edit_profile GET /profiles/:id/edit(.:format) {:action=>"edit", :controller=>"profiles"}
profile GET /profiles/:id(.:format) {:action=>"show", :controller=>"profiles"}
PUT /profiles/:id(.:format) {:action=>"update", :controller=>"profiles"}
DELETE /profiles/:id(.:format) {:action=>"destroy", :controller=>"profiles"}
root /(.:format) {:action=>"new", :controller=>"users"}