Я все еще новичок в Rails и с трудом понимаю, как работает система путей в Rails.
В моем route.rb я создаю псевдоним для регистрации:
match 'signup' => 'user#new'
resource :user, :controller => 'user'
Действие там и переход к / регистрация показывает правильное действие. Пока все хорошо.
Теперь, когда я отправляю свою регистрационную форму, она запускает действие create с POST, как обычно. И вот где я застрял.
Если регистрация не удалась, я хотел бы снова предоставить пользователю форму регистрации. Одним из вариантов было бы сделать рендер "новым", но он переводит пользователя в / user вместо /signup.
UserController
class UserController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save
redirect_to root_url
else
render "new"
end
end
end
Любая помощь приветствуется!
ОБНОВЛЕНИЕ - НАЙДЕНО РЕШЕНИЕ
Добавлено 2 соответствия маршрутов для / регистрации, используя опцию: via
match 'signup' => 'user#new', :as => :signup, :via => 'get'
match 'signup' => 'user#create', :as => :signup, :via => 'post'
Таким образом, приложение знает, что при публикации в / signup оно должно запускать действие create, а когда используется http-метод get, оно использует новое действие.
Разметка контроллера аналогична указанной выше.