0

さて、これら 2 つの関連する質問は、Railscast #21に関するものです。

ルートで悩んでいます。2 つの問題:

1) チュートリアルのルートは、アプリケーションのルートに関連しているようです。それらをモデルのルートに相対的にしたい。そう

" http://example.com/login" I need to be " http://example.com/model/login" (ログアウトの場合はその逆)。

パーマリンクを使用して自分のレコードを参照していますが、オーバーライドを指定する方法がわかりません。" " を使用しようとするたびに、レコード"login"http://example.com/model/loginが見つからないというエラーが表示されるからです。ログイン/ログアウトのためにこれをオーバーライドするにはどうすればよいですか?

2) カスタム ルートに移動しても、アドレス バーにカスタム ルートが保持されないようです。" " に行くとhttp://example.com/login正しいページに移動しますが、ブラウザhttp://example.com/session/newのアドレス バーには " " と表示されます。チュートリアルでは、これは発生しません。アプリは正しいページを提供し、カスタム ルートをアドレス バーに保持します。どうすればこれを実現できますか?

## Sessions Controller
class SessionController < ApplicationController
  def create
    session[:password] = params[:password]
    flash[:notice] = "Successfully Logged In"
    redirect_to :controller => 'brokers', :action => 'index'
  end

  def destroy
    reset_session
    flash[:notice] = "Successfully Logged Out"
    redirect_to login_path
  end
end

## Routes
ActionController::Routing::Routes.draw do |map|
  map.resources :brokers, :session
  map.login 'login', :controller => 'session', :action => 'create'
  map.logout 'logout', :controller => 'session', :action => 'destroy'
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
end
4

1 に答える 1

0

「モデルのルート」とはどういう意味ですか? コントローラーとそのアクションへのルートを作成する必要があります。コントローラはモデルと通信する必要があります。

エラー メッセージは少しわかりにくいかもしれませんが、私が見る限り、この URL は次のとおりです。

http://example.com/model/login

次のルートを使用して、モデルと呼ばれるコントローラーでloginと呼ばれるアクションを空の ID (おそらく存在しない) で呼び出します。

map.connect ':controller/:action/:id'

ルートに「サブフォルダー」が必要な場合は、名前空間を使用できます。詳細をすべて覚えているわけではありませんが、ここで多くの情報を見つけることができます。警告の言葉: 名前空間はルートのデバッグを非常に難しくします。どのルートが実際に使用されているかを理解するのはとても楽しいです。正しいルートが使用されていることを確認するために、多くの非常に具体的なルートを作成することになりました。

于 2008-11-16T19:06:02.833 に答える