为什么在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
定义自定义路由。