Я очень плохо знаком с рельсами, поэтому, пожалуйста, прости мои ограниченные знания.
У меня есть контроллер с именем users. У него есть два метода: new
и create
.
Когда вызывается users#new
, отображается форма для регистрации учетной записи на моем сайте. Я настроил для этого маршрут, который делает URL / регистрацию, например так:
match "signup" => "users#new", :as => "signup"
Когда пользователь переходит в / signup, я создаю новую переменную user
instance и показываю им форму, например:
UsersController
def new
@user = User.new
end
Новый вид
<%= form_for @user do |f| %>
<!-- Form code here... -->
<!-- Then at the end: -->
<%= f.submit :value => 'Sign Up' %>
<% end %>
Когда пользователь отправляет эту форму, он отправляет данные на users#create
.
Мой код для users#create
в UsersController
выглядит так:
def create
@user = User.new(params[:user])
if @user.save
redirect_to root_url, :notice => 'Signed Up!'
else
render "new"
end
end
Оператор if / else проверяет, смог ли rails создать моего нового пользователя или нет. Если это так, он перенаправляет на индекс без проблем.
Если не удалось создать пользователя, он отображает мой новый вид и отображает ошибки в порядке.
Но URL-адрес, который он нам дает, это / users, потому что, когда он отправляет форму, он отправляет / users. Как я могу получить его, чтобы в случае сбоя регистрации он перенаправлялся в / signup и по-прежнему отображал ошибки, которые произошли?
ОБНОВЛЕНИЕ: rout.rb
Flightdb::Application.routes.draw do
get "users/new"
get "home/about"
get "home/index"
root :to => 'home#index'
match 'about' => 'home#about'
match "signup" => "users#new", :as => "signup"
resources :users
end