Routes.rb未反映在_path和_url

时间:2019-01-10 15:06:57

标签: ruby-on-rails

我已经在routes.rb中定义了自定义URL路径,但是我的_path_url助手会生成其他错误的路由。

routes.rb

get '/:id', to: 'groups#show', constraints: proc {|req| FriendlyId::Slug.where(sluggable_type: 'Group').pluck(:slug).include?(req.params[:id])}, as: :group
get '/:id', to: 'custom_pages#show', constraints: proc {|req| FriendlyId::Slug.where(sluggable_type: 'CustomPage').pluck(:slug).include?(req.params[:id])}, as: :custom_page
get ':group_id/:id', to: 'exams#show', constraints: proc {|req| FriendlyId::Slug.where(sluggable_type: 'Exam').pluck(:slug).include?(req.params[:id])}, as: :exam

预期路线:

  • / custom /
  • / test /
  • / test / exam /

实际路线:

  • / custom /
  • / test /
  • / test / exam /(可以加载,但未定义_path_url
  • / exam /(为_path_url定义)

因此,所有所需的路由都会加载,但是_path_url助手会始终显示错误的考试路径(/exam/),尽管不在route.rb中。 :/

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

我假设问题是关于exam_pathexam_url的路由助手结果。 这可能是因为您称呼他们的方式。

由于path中还有其他参数,因此您也应该将它们传递给helper:

exam_path('exam', group_id: 'test') # => /test/exam