2009-03-25 8 views
3

私は自分のID(SEO juicinessの場合)ではなく、パーマリンクでレコードを検索するように私のshow controllerを変更しました。Permalinkによるプロジェクトの検索、404が見つからない場合

def show 
    @project = Project.find_by_permalink(params[:id]) 
end 

しかし、私はローカルホストで入力した場合:3000 /プロジェクト/ fooのを(とFOOパーマリンクのプロジェクトがありません)私の代わりに見つからない404の500サーバーエラーを取得します。

これはなぜですか、どのように修正できますか?

+0

Railsコンソール(またはdevelopment.log)に表示される特定のエラーメッセージは何ですか? – marzagao

答えて

7

これは、2.3に加えかもしれませんが、あなたはちょうどこのような動的ファインダー後exclaimationポイントを使用することができます。何もActiveRecord::RecordNotFound例外が発生見つからない場合

def show 
    @project = Project.find_by_permalink!(params[:id]) 
end 

0

私が見つけることがそうでなければあなたは@projectsは、いくつかのデータを持っていることを確認するためにチェックして、手で404をレンダリングする必要がnil

を返しているときにshowアクションが@projectの属性を参照しようとしているので、500エラーを取得していると仮定。私のサイトでは、私は似たような状況で「エラー」と呼ばれるカスタムアクションをレンダリング:

render :action => 'error', :status => 404 if @projects.blank? 

@projectsが存在する場合は、showアクションが通常通りレンダリングします。

0

また、404例外を発生させることもできます。

関連する問題