0

ホームページにいるときはリンクが正常に機能するアプリを持っていますが、「ユーザー」などのリソースに属するページにいるときは、いくつかのリンクが少し奇妙になります。

ホームページで「About」ページへのリンクをクリックすると、そこに直接移動します。しかし、users/index のページで「About」ページのリンクにカーソルを合わせると、リンク先が「users/about」と表示されます。

私のルートファイルは次のようになります。

RobotimusApp::Application.routes.draw do

  resources :users

  root to: "pages#home"

  match '/about', to:'pages#about'
  match '/guides', to:'pages#guides'

end

これが私のナビゲーションバーの外観です

%ul.nav
  %li
    =link_to 'Home', root_url
  %li
    =link_to 'About', 'about'
  - if user_signed_in?
    %li
      = link_to('My Sites', user_path(current_user))
4

2 に答える 2

2

問題は次の行にあります。

=link_to 'About', 'about'

のようにルーティングされたパスを渡す代わりにabout_path、文字列を渡します'about'。URL パラメーターとして文字列を受け取るとlink_to、ルーターなどを介してそれを実行しません。それがあなたが行きたい URL であると仮定します。(結局のところ、about_pathなどは文字列を返します。)

したがって、HTML では次のようになります。

<a href="about">About</a>

ここで、aboutは相対 URL であるため、パス/usersから に移動し/users/aboutます。

前にスラッシュを使用して、絶対パスにすることができます。

= link_to 'About', '/about'

しかし、代わりにルートを使用できる場合に URL をハードコーディングすることは、特に Rails-y ではありません。あなたはおそらく次のようなことをしているでしょう:

= link_to 'About', about_pages_path

about_pagesルート名ですか?おそらくそうあるべきです。いつでもasパラメーターで名前を付けることができます。)

于 2012-06-29T22:50:38.267 に答える
1

ターミナルで実行するrake routesと、利用可能なすべてのルートのリストが表示されます。

Aboutページのリンクは

  = link_to 'About', about_pages_path
于 2012-06-29T22:48:52.940 に答える