我目前在为我的应用程序设置正确的路线时遇到一些问题。
总之,我希望有这样的网址:
说明:
Show actual page for the selected poll
的
抽象:
localhost:3000/polls/:category_slug/:poll_id
的示例:的
localhost:3000/polls/technology/1337
的routes.rb
get 'polls/:category_slug/:poll_id' => 'polls#show', :as => :poll
此外,用户应该能够根据某些标准过滤民意调查,例如显示Top-Polls,New-Polls 等等...
解释:
Show a list of polls, which are matching the selected criteria
的
摘要:
localhost:3000/polls/:category_slug/:filter_mode
示例:
localhost:3000/polls/technology/top
的routes.rb
get 'polls/:category_slug/:filter_mode' => 'filter#by_mode', :as => :polls_filter
这就是问题
ActiveRecord::RecordNotFound : Couldn't find Poll with ID=top_all
的
第二条路线('polls/:category_slug/:filter_mode'
)覆盖第一条路线,因此Rails将:filter_mode
识别为:poll_id
。
所以我的问题是,我怎么能改变这种行为,所以这两条路线实际上都会工作,而不会互相覆盖?(当我遗漏时,第一条路线会完美地工作第二个)
我希望有人理解我的问题,感谢每一个帮助。
答案 0 :(得分:1)
您可以在过滤器上设置一个约束,只接受字符串,然后将其放在另一个上。它会落到poll_id中。