ruby-on-rails - POST 登录路由在生产环境中不起作用

标签 ruby-on-rails ruby heroku url-routing production-environment

我是 ruby​​ on rails 的新手。我正在开发一个具有身份验证系统的应用程序。
我的问题是在生产环境(Heroku)中登录应用程序时出现错误。它正在开发中。

错误
我在输入 url 后生成 https://akashpinnaka.herokuapp.com/login , 它正在重定向到 https://akashpinnaka.herokuapp.comlogin .对于 POST 登录,我缺少 root_url 和“登录”之间的“/”。
注意:在开发环境中工作。

我的路线是

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

session Controller

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

session #new

<%= 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 %>

最佳答案

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

  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

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

关于ruby-on-rails - POST 登录路由在生产环境中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34461216/

相关文章:

python-3.x - 如何在 Ubuntu 18.04 上使用 --enable-shared 配置 python

ruby-on-rails - 从 Rails.application.routes.url_helpers 访问引擎路由

ruby-on-rails - 未定义的局部变量或方法 'current_user'

arrays - Ruby:通过将数组映射到数组来构建哈希

python - Adobe Brackets 和运行 Ruby/Python 程序

Java servlet out.write(int) 提示用户保存文件

javascript - 绝对初学者的 Node.js/Express.j 或 Ruby on Rails

ruby-on-rails - 如何在 Arel 和 Rails 中执行 LIKE 查询?

html - 如何在 div html 中使用 ruby

heroku - 角色 "username"heroku Nodejs 的连接过多 - 什么是 yobuko?