我正在尝试通过开发自己的自定义 CMS(是的,是的……)来学习 RoR,我想做一件简单的事情,但无法提出一个干净的解决方案。
我的路线文件具有以下匹配项:
match '/login' => "sessions#new"
它的作用是,在点击“http://localhost:3000/login”时,让我登录以创建一个新会话。它完美地工作......
但是,这就是我的 Sessions 控制器的样子:
class SessionsController < ApplicationController
def create
@username = params[:session][:username]
@password = params[:session][:password]
@rUser = User.find_by_username(params[:session][:username])
#if user && user.authenticate(params[:session][:password])
if @rUser && Digest::SHA2.hexdigest(@password) == @rUser.password
# Sign the user in and redirect to the user's show page.
redirect_to users_path, :flash => { :notice => "Logged in as #{@username}." }
else
# Create an error message and re-render the signin form.
redirect_to '/login', :flash => { :error => "Login failed. Either the username or password was incorrect." }
end
end
end
如果您查看我的 if-else 条件中的“else”语句,您会看到我使用 redirect_to '/login' 在登录失败时显示相同的表单。有没有更好的方法来创建指向“/login”的永久链接而不是必须使用字符串,因为如果我决定将来更改 URL,我宁愿不必在多个地方进行更改。
如果不清楚,请见谅!随意要求进一步的代码(不显示它的可悲性)。