我在routes.rb中有以下代码:
match 'users/linkedin' => "users#linkedin", :as => :register_linkedin
我的期望是,当我有一个redirect_to register_linkedin_url时,我将被重定向到domain.com/users/linkedin。
这应该导致控制器用户执行动作确认。
这就是我在日志中得到的结果:
重定向到 http://localhost:3000/users/linkedin 完成302发现于28333ms
开始获取“/ users / linkedin” 127.0.0.1 at Thu Apr 14 01:12:01 -0700 2011处理方式 UsersController#显示为HTML
参数:{“id”=>“linkedin”} 完成时间为94毫秒
这就是我在'rake routes'中得到的:
register_linkedin
/users/linkedin(.:format)
{:行动=> “中LinkedIn”, :控制器=> “中的用户”}
因此路线无法正常工作。我该如何解决这个问题?
答案 0 :(得分:1)
这是因为您可能在路线中使用resources :users
如果您想保留show
行为,并使用linkedin部分,请将自定义路线放在resources :users
这样做,如果请求是特定的(用户/ linkedin),路由将匹配linkedin
,如果没有,将继续搜索,下一个将是show
当然
详细了解路由here
答案 1 :(得分:0)
路由按照定义的顺序进行匹配。将更具体的路线放在比特定路线更高的路线上。
在您的情况下,只需确保在定义更通用的users/linkedin
路由之前定义resources :users
的自定义路由。