私の Ruby on Rails アプリでは、ユーザーの認証が成功したときに、そのユーザーが所属するアカウントに基づいて特定のホームページに移動したいと考えています。
次のように、Sessionsコントローラーに「if」句を追加してみました:
def create
if user = User.authenticate(params[:login], params[:password])
session[:user_id] = user.id
if user.account.name == "X"
redirect_to Xhome_path, :notice => "Logged in successfully"
else
redirect_to home_path, :notice => "Logged in successfully"
end
else
flash.now[:alert] = "Invalid login/password combination"
render :action => 'new'
end
end
routes.rb の既存の次の行をコピーします。
match '/home' => "users#home", :as => "home"
私はこれを追加しました:
match '/Xhome' => "users#Xhome", :as => "Xhome"
これは機能せず、次の結果が得られます。
user.account.name 'X' を持つユーザーがログインすると、ブラウザーに次のエラー メッセージが表示されます。
NameError in SessionsController#create
初期化されていない定数 SessionsController::Xhome_path
ただし、このユーザーが認証された後に mydomain.com/Xhome の URL を入力すると、正常に機能し、予想される Xhome ビューが表示されます。これは、ルート側に問題がないことを証明しているようです。
この NameError の問題がどこから発生するか知っていますか? home_path と同じように Xhome_path を使用できないのはなぜですか?