比方說,我有一個經典的博客應用程序的評論和帖子。 在此應用程序中,評論總是嵌套在帖子下。覆蓋Rails路由助手的嵌套資源
GET /posts/:posts_id/comments/:id ...
我想在某種程度上覆蓋URL助手,以便我可以讓他們像評論不是嵌套的資源。
要求:
的意見,才應使用嵌套的網址:
/posts/:posts_id/comments/:id
我應該能夠做到:
comments_path @comment
而且
redirect_to @comment
我已經試過:
我能得到的Rails與生成不帶前綴的路由助手:
resources :posts
scope '/posts/:post_id' do
resources :comments
end
但comments_path(@comment)
還是會給我ActionController::UrlGenerationError
爲post_id
未設置。
我當然可以手動創建自己的幫助器方法,但我希望rails可以生成幫助器。
從我的理解路線幫手是一個單板圍繞ActionDispatch::Routing::UrlFor
。我一直在尋找ActionDispatch::RoutingPolymorphicRoutes
,但我無法找到生成的幫助程序如何將模型實例「串行化」爲參數。
是否有可能創建一個模型方法,當路由幫助器將註釋資源轉換爲參數時使用?
我正在考慮沿着to_param
的方向行事。
你爲什麼不嘗試這樣的事情! 'resources:posts resources:comments',without'scope'。 –
@jonsnow謝謝,但你顯然不明白這個問題。這會給我'user_comments_path',我需要提供id和post_id。 – max
我知道還有其他的解決方案,如採用裝飾,但我想知道,如果它能夠對模型級別創建替代,這樣我就可以使用開箱幫手。 – max