为什么Rails 3中的这条路由自定义操作不起作用? (更好的方法?)

时间:2011-04-14 08:16:21

标签: ruby-on-rails-3 routes

我在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”,   :控制器=> “中的用户”}

因此路线无法正常工作。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

这是因为您可能在路线中使用resources :users

如果您想保留show行为,并使用linkedin部分,请将自定义路线放在resources :users

之前

这样做,如果请求是特定的(用户/ linkedin),路由将匹配linkedin,如果没有,将继续搜索,下一个将是show当然

详细了解路由here

答案 1 :(得分:0)

路由按照定义的顺序进行匹配。将更具体的路线放在比特定路线更高的路线上。

在您的情况下,只需确保在定义更通用的users/linkedin路由之前定义resources :users的自定义路由。