私は独自のカスタム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を変更することにした場合、複数の場所で変更を加える必要がないためです。
はっきりしない場合は申し訳ありません!遠慮なく追加のコードを要求してください(それの哀れさを恐れて表示されていません)。