如何解决为什么在Rails 3中使用自定义操作的此路由不起作用? 更好的方法?
| 我的routes.rb中有以下代码:match \'users/linkedin\' => \"users#linkedin\",:as => :register_linkedin
我的期望是,当我有一个redirect_to register_linkedin_url时,我将被重定向到domain.com/users/linkedin。
然后,这将导致执行动作的控制器用户被执行。
这是我在日志中得到的:
重定向到
http:// localhost:3000 / users / linkedin
在28333ms内完成302发现
开始了GET \“ / users / linkedin \”
127.0.0.1 at Thu Apr 14 01:12:01-07-07 2011 Processing by
UsersController#显示为HTML
参数:{\“ id \” => \“ linkedin \”}
94ms内完成
这就是我在“耙路”中得到的:
register_linkedin
/users/linkedin(.:format)
{:action => \“ linkedin \”,
:controller => \“用户\”}
因此路由无法正常运行。我该如何解决?
解决方法
这是因为您的路线中可能使用了“ 1”
如果您想保留
show
动作,并且也要使用linkedin部分,请将自定义路线放在resources :users
之前
这样,如果请求是特定的(用户/ linkedin),则路由将匹配match4ѭ,否则,将继续搜索,下一个当然是show
在此处阅读有关路由的更多信息
,路由按照定义的顺序进行匹配。将较具体的路由置于较不具体的路由之上。
在您的情况下,只需确保在定义更通用的resources :users
路由之前为users/linkedin
定义自定义路由。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。