2009-08-11 16 views
4

私はPostsControllerを持っていますが、例には必須ではありませんが、スニペットを貼り付けると助けになります。current_page?は、名前が示すように、表示されているページを把握しています。私は奇妙な結果に見えるものを得ている。Railsでexample.com/controllerとexample.com/controller/の違いは何ですか?

current_page?は、/posts/posts/の場合、別の回答が返されます。試験として

は、私のコントローラのindexビューに私は単に私が(最後はスラッシュを指定しないと)/コントローラに行けば、current_page?はtrueを返します

current_page?(:action => 'index') 

を呼び出しています。しかし、私が/ controller /に行くと、falseを返します。ログをテーリング

の両方が実際に

Processing PostsController#index (for 127.0.0.1 at 2009-08-11 18:28:12) [GET] 
    Parameters: {"action"=>"index", "method"=>:get, "controller"=>"posts"} 

同じアクションを打つんことを示しているアクションが予想されるとして、両方に同じ結果が得られます。

私はRails 2.3.2を使用しており、this ticketは近いと思われるものです。注釈者は、current_pageは、2つのURLが両方とも同じRESTfulオブジェクトを参照する場合、2つのURLが同じページであるとみなさなければならないと考えています。

ありがとうございました。

答えて

4

レールのルーティングは、に最後のスラッシュを許容しますが、あなたは(標準ルートで)url_for:action => 'index', :controller => 'posts'を渡すとき、それは生成されません。

現在のページによると? documentationこれは、渡された引数からURLを生成して、現在のリクエストURLの文字列と比較します。

  • はのparamsを比較し、:これはURLの末尾には、それが現在のURLが/コントローラと

    /コントローラ/

    偽である場合、あなたの問題を解決することができ、いくつかの方法がありますがtrueを返しますスラッシュはありません生成されたので、生成されたURLはありません
  • /controller/to/controllerからリダイレクトします。これは実際に私は他の方法は、いつものように:)理にかなっている
+0

があると確信しているあなたはSEO

  • ためにも、ページのキャッシュなどをすればよいでしょう。おそらくcurrent_pageのソースをチェックしているはずですか?どうもありがとうございました! – theIV

  • 関連する問題