Я все еще новичок в Rails и с трудом понимаю, как работает система маршрутов в Rails.Rails render route path
В моем routes.rb я создать псевдоним для Signup:
match 'signup' => 'user#new'
resource :user, :controller => 'user'
Действия есть и будет/регистрация показывает правильное действие. Все идет нормально.
Теперь, когда я отправляю свою регистрационную форму, она запускает действие с POST, как обычно. И вот где я застрял.
Если регистрация не удалась, я хотел бы снова представить пользователю форму регистрации. Один из вариантов заключается в том, чтобы сделать рендер «новый», но это приводит к тому, что пользователь/пользователь вместо/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 матч маршрутизации для/регистрации, используя: с помощью опции
match 'signup' => 'user#new', :as => :signup, :via => 'get'
match 'signup' => 'user#create', :as => :signup, :via => 'post'
Таким образом, приложение знает, что при отправке сообщений/регистрации он должен запустить создать действие, и когда http-метод получает, он использует новое действие.
Разметка контроллера такая же, как и выше.
Hi Hiasinho, спасибо за ваш ответ. Это будет работать при перенаправлении на регистрацию. Дело в том, что я хотел бы сохранить объект пользователя, чтобы форма была заполнена. Однако ваш ответ привел меня в правильном направлении. Я добавлю результат. –