Рельсы 3 маршрутизации сохранить пользовательский URL для сообщения

Я довольно новичок в rails и хочу сохранить URL-адрес для входа в систему, если есть ошибка и отображается "новый" шаблон

вот мои маршруты

resources :users, only: [:new, :create]
resources :sessions, only: [:new, :create, :destroy]

root to: 'pages#home'

match '/signin', to: 'sessions#new'
#match '/signin', to: 'sessions#create', via: :post, as: :post_session
match '/logout', to: 'sessions#destroy'

и вот код контроллера сессий

def new
end

def create
    user = User.find_by_email(params[:session][:email])
    if user && user.authenticate(params[:session][:password])
        sign_in user
        redirect_to root_url
    else
        flash.now[:error] = 'Invalid email or password'
        render 'new'
    end
end

как вы можете видеть, у меня есть собственный маршрут, закомментированный для перехвата поста, так что вызов render 'new' сохраняет URL / signin, но когда я это делаю, флеш-сообщение об ошибке не отображается на странице (это без этого маршрута, хотя). я пытался использовать флэш-память без использования метода now и до сих пор не видел, чтобы мое сообщение появилось. есть идеи?

РЕДАКТИРОВАТЬ:

я попробовал предложения ниже и все еще видел проблему. после просмотра журналов доступа приложение направлялось к первому маршруту входа, потому что он был определен с помощью match, а не get. мой обновленный и рабочий файл маршрутов теперь выглядит так

resources :users, only: [:new, :create]
#resources :sessions, only: [:new, :create, :destroy]

root to: 'pages#home'

match '/signin', to: 'sessions#new', via: :get
match '/signin', to: 'sessions#create', via: :post, as: :post_session
match '/logout', to: 'sessions#destroy', via: :delete

1 ответ

Решение

Убери сейчас, это не должно быть нужно. Ваши маршруты, вероятно, противоречат друг другу. Исходя из того, как у вас настроены линии соответствия, вы, вероятно, можете просто удалить resources :sessions в целом, а затем раскомментируйте строку матча. Это должно заботиться о том, что вам нужно.

Кроме того, не забудьте вернуться к другим вопросам и принять некоторые ответы. Приемлемость в 0% вряд ли привлечет ответы.

редактировать

Судя по вашим комментариям, он может просто не знать, что визуализировать, когда вы удалили вызов ресурсов. Попробуйте перейти на:

render "sessions/new"
Другие вопросы по тегам