首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails路由问题

rails路由问题
EN

Stack Overflow用户
提问于 2009-08-23 20:28:39
回答 3查看 202关注 0票数 2

我有一些RESTful控制器,并向application_controller添加了一个自定义方法。我没有改变路线上的任何东西来指示这个新的方法。方法为poll_memos。我输入了以下URL:

/groups/1234/poll_memos

我得到以下错误:

未知动作

1234没有采取任何行动。操作:创建、销毁、编辑、索引、新建、poll_memos、显示和更新

两个问题:既然我没有修改路由,rails是如何知道poll_memos的?第二,既然它似乎知道它,为什么它不起作用?

EN

回答 3

Stack Overflow用户

发布于 2009-08-23 20:44:41

我不认为这是rails自动生成的restful路由。这意味着您需要自己添加它。

看看这个question和这个one

它在操作中,因为它在控制器中,错误消息只是打印所有动作。

票数 1
EN

Stack Overflow用户

发布于 2009-08-23 20:58:00

正确的url是/group/poll_memos/1234。在您的示例中,rails认为您正在尝试调用名为"1234“的控制器方法,当然,这是不存在的。

Rails知道poll_memos,因为打印错误消息的代码会查看控制器代码,而不是路由。您可以以这样的方式设置路由,这样它就会说存在poll_memos方法,但是您无法通过URL访问它。

票数 1
EN

Stack Overflow用户

发布于 2009-08-24 15:48:50

这是因为您很可能触发默认路由:

代码语言:javascript
复制
map.connect ':controller/:action/:id'

您的URL

代码语言:javascript
复制
/groups/1234/poll_memos

地图如下:

代码语言:javascript
复制
{:controller => "groups", :action => "1234", :id => "poll_memos"}

此外,在使用restful样式时,需要配置路由。要使投票备忘录能够处理集合中的项目,您需要修改路由以映射如下:

代码语言:javascript
复制
map.resources :groups, :member => {:poll_memos => :get}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1319472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档