如何解决资源中发布路线的URL帮助器
| 我有一条足智多谋的路线,其中嵌套有一个“ 0”路线:resources :groups,:only => [:index,:show] do
post \'send_audit_reminder\',:on => :member
end
如果我运行rake routes
,则此路线显示就很好了:
send_audit_reminder_group POST /groups/:id/send_audit_reminder(.:format)
{:controller=>\"groups\",:action=>\"send_audit_reminder\"}
但是,我似乎无法弄清楚如何参考给定路由的“ 4” URL。我尝试过send_audit_reminder_group_path(@group)
和send_audit_reminder_url(@group)
,它们都给我以下错误:
No route matches {:controller=>\"groups\",:action=>\"send_audit_reminder\"}
从rake routes
中可以看出,确实存在一条与这些参数匹配的路由,并且控制器上也存在匹配方法。
如何找到此路线的路径或URL?我不想对其进行硬编码,因为我们的应用程序已部署到同一虚拟主机上的子目录中,所以硬编码的绝对路径将不起作用。
将来我会在哪里寻找有关文档或信息?由于这些路径和URL帮助器方法是从我的路线生成的,因此我显然无法查找文档,而rake routes
告诉我该路线在那儿,但是当我尝试获取该URL时它似乎不在那儿。
解决方法
可能是您缺少占位符,因此无法进行占位。以下应该根据您的定义起作用:
send_audit_reminder_group_path(group)
每当您在路线中看到诸如:id
或:group_id
之类的标识符时,都必须提供它们,除非它们放在方括号中,括号将其声明为可选,如:format
一样。必须按照声明的顺序提供参数。为了这:
/example/:user_id/groups/:id
此路由的参数为user_id
和id
,并且都必须提供。通常,对于路由,您可以使用文字数字或字符串,或者像所有ActiveRecord :: Base派生的那样支持17的模型。
所有这些都源于用“ 18”进行声明,这意味着它是特定于特定记录的,而不是用“ 19”进行声明的地方。 《 Rails路由指南》中有更多解释。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。