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)
通常,当您的表单无法保存时,您不会重定向。您显示相同的表格,并附有错误解释。
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)
如果您确定要重定向,请务必继续。但提供正确的路径:)
| 归档时间: |
|
| 查看次数: |
542 次 |
| 最近记录: |