【问题标题】:Any way to hide a route from Rails route page?有什么方法可以从 Rails 路线页面隐藏路线?
【发布时间】:2015-06-25 23:14:01
【问题描述】:

基本上,我有 2 个路由路径,我想隐藏或更改 Path 和 Controller#Action 列表。

这是我正在谈论的两个的屏幕截图:

我不希望在该错误页面上按原样显示以下内容:

/createcsblog1234 & compscis#new
/createpblog1234 & personalbs#new

我尝试将它们从 get 更改为 post,但它仍然按原样在错误页面中显示它们。

我已经检查了其他问题的一些答案,但找不到任何我想要的东西。我正在考虑创建一个通用的“404”页面,以防用户输入错误的 url,这样我就可以完全绕过这个错误页面,但我也不知道该怎么做。

编辑:粘贴所有 config/environments/production.rb 文件:

Rails.application.configure do
  # Settings specified here will take precedence over those in config/application.rb.

  # Code is not reloaded between requests.
  config.cache_classes = true

  # Eager load code on boot. This eager loads most of Rails and
  # your application in memory, allowing both threaded web servers
  # and those relying on copy on write to perform better.
  # Rake tasks automatically ignore this option for performance.
  config.eager_load = true

  # Full error reports are disabled and caching is turned on.
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true

  # Enable Rack::Cache to put a simple HTTP cache in front of your application
  # Add `rack-cache` to your Gemfile before enabling this.
  # For large-scale production use, consider using a caching reverse proxy like
  # NGINX, varnish or squid.
  # config.action_dispatch.rack_cache = true

  # Disable serving static files from the `/public` folder by default since
  # Apache or NGINX already handles this.
  config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?

  # Compress JavaScripts and CSS.
  config.assets.js_compressor = :uglifier
  # config.assets.css_compressor = :sass

  # Do not fallback to assets pipeline if a precompiled asset is missed.
  config.assets.compile = false

  # Asset digests allow you to set far-future HTTP expiration dates on all assets,
  # yet still be able to expire them through the digest params.
  config.assets.digest = true

  # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb

  # Specifies the header that your server uses for sending files.
  # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
  # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX

  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
  # config.force_ssl = true

  # Use the lowest log level to ensure availability of diagnostic information
  # when problems arise.
  config.log_level = :debug

  # Prepend all log lines with the following tags.
  # config.log_tags = [ :subdomain, :uuid ]

  # Use a different logger for distributed setups.
  # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)

  # Use a different cache store in production.
  # config.cache_store = :mem_cache_store

  # Enable serving of images, stylesheets, and JavaScripts from an asset server.
  # config.action_controller.asset_host = 'http://assets.example.com'

  # Ignore bad email addresses and do not raise email delivery errors.
  # Set this to true and configure the email server for immediate delivery to raise delivery errors.
  # config.action_mailer.raise_delivery_errors = false

  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
  # the I18n.default_locale when a translation cannot be found).
  config.i18n.fallbacks = true

  # Send deprecation notices to registered listeners.
  config.active_support.deprecation = :notify

  # Use default logging formatter so that PID and timestamp are not suppressed.
  config.log_formatter = ::Logger::Formatter.new

  # Do not dump schema after migrations.
  config.active_record.dump_schema_after_migration = false
end

【问题讨论】:

  • 看看我的答案stackoverflow.com/questions/25841377/…,我在那里详细解释了如何实现你在最后一句话中提出的要求(创建自定义 404 和 500 页面并通过渲染来挽救一些异常这个自定义页面)。
  • 我试过这样做,但无论环境如何,都无法访问新的 404 页面
  • 你必须小心环境、路线等等。这是一个工作应用程序的示例,所以请更精确地查看它应该可以工作

标签: ruby-on-rails ruby routing routes


【解决方案1】:

使用标准配置,错误页面仅在您的 Rails 环境设置为 development 时使用。

你可以在你的:

config/enviroment/development.rb

关键是在开发您的网站时将其用作调试资源。在 production 中,您应该改用自定义 404 页面。

要真正删除路线,您需要将它们从您的routes.rb 中注释掉或删除

在 cmets 和更新问题后编辑

内部错误 Missing secret_token and secret_key_base for 'production' environment, set these values in config/secrets.yml 告诉你你没有正确配置你的secret_key。

您需要一个名为 config/secrets.yml 的文件(此文件应在版本控制中)

development:
  secret_key_base: ---some-code---

test:
  secret_key_base: ---some-code---

# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

您可以使用rake secret 生成此密钥。

(现在我假设您正在运行 Rails 4.2)

【讨论】:

  • 如何切换环境?我尝试了 rails s -e 生产,但是当我点击本地主机时,它给了我一个内部错误
  • rails s RAILS_ENV=production 应该能让你到达那里。
  • 我做了 rails s RAILS_ENV=production,然后我做了 rails s(以及 rails s -e production)......但我仍然能够进入错误页面。
  • 其实rails s -e 制作,还是给我内部错误页面
  • 那么它可能会被这个答案处理:stackoverflow.com/questions/12849597/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-11
  • 2011-04-15
  • 2022-11-27
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
相关资源
最近更新 更多