2013-04-07 108 views
0

使用Rails 3.2。我實現個性化網址用戶網址:觸發ActiveRecord :: RecordNotFound而不是返回零

# routes.rb 
resources :users 
match 'u/:login' => 'users#show', :as => :main_user 

# users_controller.rb 
class UsersController < ApplicationController 
    def show 
    @user = User.where(:login => params[:login]).first 
    end 
end 

通常,如果我們用@user = User.find(params[:id]),它將返回ActiveRecord::RecordNotFound,然後重定向到500404(不知道哪一個會被重定向到,但是這並不重要)。

但在上述情況下,它只是返回@user = nil並繼續呈現show行動。我怎樣才能以一種像搜索id一樣的方式進行編碼?

回答

3

如果找不到記錄,則可以使用.first!(Docs)增加ActiveRecord::RecordNotFound錯誤。

@user = User.where(:login => params[:login]).first! 
+0

太棒了!謝謝 ! – sidney 2015-08-20 14:11:37

相關問題