我有一个应用程序,当我在主页上时链接工作正常,但当我在属于“用户”等资源的页面上时,某些链接会有点奇怪。
当我在主页上点击“关于”页面的链接时,我直接在那里。但是,如果我在用户/索引的页面上,并将鼠标悬停在“关于”页面的链接上,则会将目标显示为“用户/关于”。
这是我的路线文件的样子。
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))
答案 0 :(得分:2)
Welp,问题出在这一行:
=link_to 'About', 'about'
我们传入字符串about_path
,而不是传入像'about'
这样的路由路径。当link_to
收到一个字符串作为其URL参数时,它不会通过路由器或任何东西运行它;它假定这是您想要访问的URL。 (毕竟,about_path
等返回字符串。)
所以,你最终在HTML中得到这样的东西:
<a href="about">About</a>
此处,about
是相对网址,因此从路径/users
转到/users/about
。
你可以只使用前面的斜杠使其成为绝对路径:
= link_to 'About', '/about'
但是当我们可以使用路由时,对我们的URL进行硬编码并不是特别的Rails-y。你可能会这样:
= link_to 'About', about_pages_path
(路由名称是about_pages
吗?它可能应该是。您始终可以使用as
参数命名。)
答案 1 :(得分:1)
如果您在终端中运行rake routes
,您将获得所有可用路线的列表。
认为您的关于页面的链接应该是
= link_to 'About', about_pages_path