<% end %>
If you already have account, please sign in <%= link_to "here", login_path %>.
<%= link_to "Back to home page", ucp_path %>.[/code]
controller:
[code]def register
@title = "Register on User Control Panel"
unless session[:user_id]
if request.post?
@user = User.new(params[:user])
if @user.save
flash[:notice] = "User with login #{@user.username} was created! Please sign in now."
session[:user_id] = @user.id
redirect_to :action => :index
end
end
else
flash[:notice] = "You are logged, and what you want from register page?"
redirect_to :action => :index
end
end[/code]
Gdy używam:
[code]<%= error_messages_for :user %>[/code]
kod jednak nie chce zadziałać.
:o co to jest? w railsach tworzy się oddzielne akcje dla GET, POST, PUT, DELETE, nie wrzuca się ich razem.
[code=ruby]class UsersController < ApplicationController
def new @user = User.new
end
def create @user = User.new(params[:user])
if @user.save
redirect_to sign_in_path, notice: "User with login #{@user.username} was created! Please sign in now."
else
render :new
end
end
end[/code]
akcja #new wyrenderuje ci formularz a #create spróbuje zapisać użytkownika. jeśli jej się uda to przeniesie na stronę logowania (sign_in_path - musisz to gdzieś sam zdefiniować) albo wyświetli widok #new z ustawioną zmienną @user więc wyświetli błędy
Niby teraz routes sobie wszystkie poprawiłem, lecz mam problem - gdy ma wyskoczyć błąd (np. pole nie jest unikatowe albo za mało znaków) to nie wyskakuje błąd, tylko przekierowuje mnie na http://localhost:3000/users i wyskakuje:
Z tego co widzę nie masz przewidziane w controller że mogą być błędy i chcesz wyświetlić jeszcze raz formularz z możliwością poprawienia błędów. Jest tylko opcja save lub że jesteś zalogowany dopisz sobie jeszcze else z render “new” w przypadku nie przejścia walidacji
def register
@title = "Register on User Control Panel"
unless session[:user_id]
if request.post?
@user = User.new(params[:user])
if @user.save
flash[:notice] = "User with login #{@user.username} was created! Please sign in now."
session[:user_id] = @user.id
redirect_to :action => :index
end
end
else
flash[:notice] = "You are logged, and what you want from register page?"
redirect_to :action => :index
end
end
Uff, działa… lecz jeszcze jeden malutki problemik. ;D
Jeżeli kliknę w zarejestruj się, ale mam błędy - i tak mnie przekierowuje na /users.
Jak to zmienić?
Chodzi mi głównie o ten problem, że przekierowuje na /users - a mam dynamicznie zmieniamy tytuł zmienną @title = “Register on User Control Panel”
[code]def new @title = “Register on User Control Panel”
unless session[:user_id] @user = User.new
else
flash[:notice] = “You are logged, and what you want from register page?”
redirect_to :action => :index
end
end
def create
@user = User.new(params[:user])
if @user.save
flash[:notice] = "User with login #{@user.username} was created! Please sign in now."
session[:user_id] = @user.id
redirect_to :action => :index
else
render :action => 'new'
end
end[/code]
Nie ma szans, żeby zrenderował ci się URL /register, bo ścieżka ta reaguje tylko na GET. Bierzesz się za to od złej, PHP-owej strony, co się mocno rzuca w oczy. Zbuduj REST-owe ścieżki, dla usera (index, show, edit, update, create, new, destroy, cokolwiek jeszcze) i dopiero potem baw się w zamianę adresów, bo w tej chwili zaczynasz już mieszać i za chwilę ciężko będzie ci z tego wyjść…
[quote=konole]Nie ma szans, żeby zrenderował ci się URL /register, bo ścieżka ta reaguje tylko na GET. Bierzesz się za to od złej, PHP-owej strony, co się mocno rzuca w oczy. Zbuduj REST-owe ścieżki, dla usera (index, show, edit, update, create, new, destroy, cokolwiek jeszcze) i dopiero potem baw się w zamianę adresów, bo w tej chwili zaczynasz już mieszać i za chwilę ciężko będzie ci z tego wyjść…
Napisanie swojego uwiezytelnienia zalecaja nawet autorzy Device, wiec jest sens zeby sie meczyc
[quote=Device_README]If you are building your first Rails application, we recommend you to not use Devise. Devise requires a good understanding of the Rails Framework. In such cases, we advise you to start a simple authentication system from scratch, today we have two resources:
Once you have solidified your understanding of Rails and authentication mechanisms, we assure you Devise will be very pleasant to work with. :)[/quote]