Rails 3路由 - 绕过:没有用户时的用户

时间:2013-10-16 15:28:21

标签: ruby-on-rails ruby-on-rails-3 routing

我不认为这是可能的,但我想我会问以防万一。

我有一个路径文件,如:

root :to => 'info#home'
match '/about' => 'info#about'
match ':user' => 'users#profile'
match '*a', :to => 'application#not_found'

如果我转到site.com/nonsense(假设“废话”不是注册用户)我预计会出现错误,但希望将错误视为未知页面而不是未知用户。

也就是说,我的日志文件显示

{"controller"=>"users", "action"=>"profile", "user" => "nonsense"}

但我希望它显示

{"controller"=>"application", "action"=>"not_found", "a"=>"nonsense"}

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这是你想要的吗?

def profile
  user = User.where(id: params[:id]).first

  unless user
    redirect_to not_found_path(a: params[:id])

    # or

    render partial: 'application/not_found'

    # or something along these lines
  end
end

答案 1 :(得分:0)

如果你想在路由器中而不是在条件控制器中这样做,请查看路由约束 - guides.rubyonrails.org/routing.html#advanced-constraints