rails 路由在另一个控制器中无法正常工作
rails routing not working as expected when in another controller
我注意到我的 navigation/routing 在我使用不同的控制器时无法正常工作。
我的路线:
get 'help/version_history' => 'about_and_helps#version_history'
我就是这样 link 的:
<%= link_to "Version History", '/help/version_history' %>
如果我显示一个特定的投诉,然后尝试转到菜单 link 查看版本历史记录,我会收到错误消息。
The page you were looking for doesn't exist.
You may have mistyped the address or the page may have moved.
url是http://cctweb:9298/complaints/help/version_history
如果我在投诉索引页面上,单击 link 会将我带到 url 为 http://cctweb:9298/help/version_history
的正确页面
错误在于相对性(可能是由于您提供的示例中的前导斜杠)。
为了使这更简单,并遵循 Rails 的惯例,我建议为您的路线指定一个名称:
get 'help/version_history', to: 'about_and_helps#version_history', as: 'my_route_name'
注意 as
选项。这告诉路由器这个路由有一个名字,在我的例子中,它被设置为 my_route_name
现在您可以 link 使用以下内容:
<%= link_to "Version History", my_route_name_url %>
这将解决相对论问题,并始终link回到该特定路线。即使您以后更改路由的 URI,使用路由名称一切仍然有效。
中找到更多选项和示例
我注意到我的 navigation/routing 在我使用不同的控制器时无法正常工作。
我的路线:
get 'help/version_history' => 'about_and_helps#version_history'
我就是这样 link 的:
<%= link_to "Version History", '/help/version_history' %>
如果我显示一个特定的投诉,然后尝试转到菜单 link 查看版本历史记录,我会收到错误消息。
The page you were looking for doesn't exist.
You may have mistyped the address or the page may have moved.
url是http://cctweb:9298/complaints/help/version_history
如果我在投诉索引页面上,单击 link 会将我带到 url 为 http://cctweb:9298/help/version_history
错误在于相对性(可能是由于您提供的示例中的前导斜杠)。
为了使这更简单,并遵循 Rails 的惯例,我建议为您的路线指定一个名称:
get 'help/version_history', to: 'about_and_helps#version_history', as: 'my_route_name'
注意 as
选项。这告诉路由器这个路由有一个名字,在我的例子中,它被设置为 my_route_name
现在您可以 link 使用以下内容:
<%= link_to "Version History", my_route_name_url %>
这将解决相对论问题,并始终link回到该特定路线。即使您以后更改路由的 URI,使用路由名称一切仍然有效。
中找到更多选项和示例