POST登录路由在生产中不起作用

Aka*_*aka 5 ruby ruby-on-rails heroku url-routing production-environment

我是红宝石的新手。我正在开发具有身份验证系统的应用程序。
我的问题是在生产环境(Heroku)中登录应用程序时出现错误。它正在开发中。 输入url https://akashpinnaka.herokuapp.com/login后产生

错误,它重定向到https://akashpinnaka.herokuapp.comlogin。我缺少用于POST登录的root_url和'login'之间的'/'。注意:在开发环境中工作。我的路线是



Rails.application.routes.draw do

get 'welcome/index'
root 'welcome#index'
resources :articles
resources :projects
resources :users

get '/login' => 'sessions#new'
post '/login' => 'sessions#create'
delete 'logout' => 'sessions#destroy'

end
Run Code Online (Sandbox Code Playgroud)

会话控制器

class SessionsController < ApplicationController

  def new
  end

  def create
    @user = User.find_by_email(params[:session][:email])
    if @user && @user.authenticate(params[:session][:password])
      session[:user_id] = @user.id
      redirect_to root_path
    else
      redirect_to 'login'
    end
  end

  def destroy
    session[:user_id] = nil
    redirect_to '/'
  end

end
Run Code Online (Sandbox Code Playgroud)

会话数#新

<%= form_for(:session, url: login_path) do |f| %> 
  <%= f.email_field :email, :placeholder => "Email" %> 
  <%= f.password_field :password, :placeholder => "Password" %> 
  <%= f.submit "Log in" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

Ser*_*sev 3

通常,当您的表单无法保存时,您不会重定向。您显示相同的表格,并附有错误解释。

  def create
    @user = User.find_by_email(params[:session][:email])
    if @user && @user.authenticate(params[:session][:password])
      session[:user_id] = @user.id
      redirect_to root_path
    else
      # should've been login_path
      # redirect_to 'login'

      render 'new' # this is better
    end
  end
Run Code Online (Sandbox Code Playgroud)

如果您确定要重定向,请务必继续。但提供正确的路径:)