Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 生成仅将最后一个资源提供给routes helper的完整资源路径_Ruby On Rails_Ruby_Ruby On Rails 5_Ruby On Rails 6 - Fatal编程技术网

Ruby on rails 生成仅将最后一个资源提供给routes helper的完整资源路径

Ruby on rails 生成仅将最后一个资源提供给routes helper的完整资源路径,ruby-on-rails,ruby,ruby-on-rails-5,ruby-on-rails-6,Ruby On Rails,Ruby,Ruby On Rails 5,Ruby On Rails 6,简言之 # routes.rb resources :article do resources :comments do resources :replies end end 我希望reply\u path生成与article\u comment\u reply\u path相同的路径 更多详细信息 我想在URL中链接一些资源,但我不想每次都将所有这些资源提供给帮助者: article_comment_reply_path(@reply.comment.article, @re

简言之

# routes.rb
resources :article do
  resources :comments do
    resources :replies
  end
end
我希望
reply\u path
生成与
article\u comment\u reply\u 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
但这将生成
/replays/:id

我确实在控制器级别解决了这个问题,方法是检查是否设置了
:article\u id
:comment\u id
,如果未设置,则将用户重定向到
article\u comment\u reply\u path
。但这会导致两个问题:

  • 双重重定向和浪费服务器资源
  • 元素中的
    href
    与页面url不同,因此确定它是否是活动的
    链接更麻烦

有没有办法让url帮助器根据其父资源生成自定义路径?

我想我在这里找到了您需要的:

direct:reply do | reply|
[回复.评论.文章,回复.文章,回复]
结束
直接:编辑|答复|答复|
[:编辑,reply.comment.article,reply.article,reply]
结束

不错!当使用
reply\u path
时,它会起作用,但当使用
edit\u reply\u path
时,它似乎忽略了direct,并表示这是一个未定义的方法。只需添加另一个direct helper即可。