2017-09-24 5 views
1

で記事を見つけることができなかった場合、Railsが個人情報を表示しないようにする方法私はこのガイドのほとんどを熟読しましたhttp://guides.rubyonrails.org/getting_started.html「id」=

私は記事のコントローラを設定し、私は新しい記事を作成するとき、私はちょうど私が存在しない番号を入力した場合、私が得ることに気づいたように

https://www.zzz.com/articles/1 
https://www.zzz.com/articles/2 
https://www.zzz.com/articles/3 

として、新しい番号が生成されます

ActiveRecord::RecordNotFound in ArticlesController#show 

を言うエラーがその後、私は、人々が見たいと思ってはいけないという情報を表示するなど、

Rails.root: /home/myname/myapp 

404エラーを表示するにはどうすればよいですか?

私は、アプリケーションのコントローラにこのようなものを追加しようとしましたが、それは解決しない:私は現在、開発モードの代わりに、製造時に実行している

class ApplicationController < ActionController::Base 
    rescue_from ActiveRecord::RecordNotFound, :with => :render_404 
    # Render 404 page when record not found 
    def render_404  
     render :file => "#{RAILS_ROOT}/public/404.html", :status => 404 
    end 
end 

。それは重要ですか?

答えて

3

はい、productionの代わりにdevelopmentモードで実行していることが重要です。 developmentでは、アプリケーションのハットは他のデフォルトと試行が最適化されており、たとえばエラーメッセージを表示して開発者を支援します。

productionのデフォルト値は、運用サーバー上で実行されているアプリケーションに対して異なり、最適化されています。アプリケーションは高速で実行され、エラーメッセージはブラウザに送信されません。

この動作をテストする場合は、config/environments/development.rbfalseconsider_all_requests_localを設定する必要があります(Rails docs about configuration参照)。これにより、デバッグ情報がブラウザに送信されなくなります。

しかし、production環境のサーバーでアプリケーションを実行することをお勧めします。

0

spickermannが既に指摘しているように、それは重要です。

この理由は、エラーメッセージの表示量を決定するconsider_all_requests_local設定の設定です。 developmentモードでは、この設定はtrueに設定され、falseproductionに設定されています。

あなたはそれが対応するconfig/environments/development.rb

# Show full error reports and disable caching. 
config.consider_all_requests_local  = true 

の設定を変更するproductionにどのように見えるかを事前に確認したい場合