自定义rails路由辅助方法

时间:2013-02-14 23:19:02

标签: ruby-on-rails routes

我遇到问题让我的帮助方法名称正常工作,任何建议都会很棒:

#config/routes.rb
resources :junkie, only: [:show, :index, :destroy], as: :junkie do
  get :merge, on: :collection
end

所以我遇到了问题,因为junkies的单数形式是junky,但是当我进行此更改并查看路线时,它会将#merge帮助器更改为:

merge_junkie_index GET    /junkies/merge(.:format)              junkies#merge

有没有办法将其更改为merge_junkie?我尝试将其从资源黑色中删除并使用匹配语法:get "junkies/merge" => "junkies#merge", as: :junkie但由于某些奇怪的原因,这导致我使用show方法,即使路线是正确的。

1 个答案:

答案 0 :(得分:2)

解决方案是一个丑陋的解决方案,但是它有效,因为展示路线是唯一受as: :junkie影响的路线,您可以将其分解出来,将merge路线放在一个单独的区块中。由于某些原因,资源的排序也很重要,如果您不先放置合并,它会将网址/junkie/merge/解释为ID并点击show操作。所以它应该在你的路线文件中看起来像这样:

resources :junkies, only: [:index] do
  get :merge, on: :collection
end
resources :junkies, only: [:show, :destroy], as: :junkie
相关问题