【发布时间】:2020-09-09 09:09:54
【问题描述】:
简而言之
# routes.rb
resources :article do
resources :comments do
resources :replies
end
end
我希望reply_path 生成与article_comment_reply_path 相同的路径
更多详情
我想在 URL 中链接一些资源,但我不想每次都将所有这些资源都提供给帮助程序:
article_comment_reply_path(@reply.comment.article, @reply.comment, @reply)
# /articles/:acticle_id/comments/:comment_id/replies/:id
相反,我想做:
reply_path(@reply)
url_for [@reply]
link_to 'View reply', @reply
但这会生成/replies/:id
我确实在控制器级别解决了这个问题,方法是检查是否设置了 :article_id 和 :comment_id,如果没有设置,则将用户重定向到 article_comment_reply_path。但这会导致两个问题:
- 双重重定向,浪费服务器资源。
-
<a>元素中的href与页面网址不同,因此判断它是否为active链接更麻烦。
有没有办法让 url 助手根据它的父资源生成自定义路径?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-5 ruby-on-rails-6