gpt4 book ai didi

ruby-on-rails - Rails : How do I create a custom 404 error page that uses the asset pipeline?

转载 作者:行者123 更新时间:2023-12-03 10:11:28 28 4
gpt4 key购买 nike

创建自定义错误处理页面的解决方案很多,但Rails 4几乎没有解决方案:

  • Basic Rails 404 Error Page
  • Dynamic error pages in Rails

  • 鼓励人们修改 404.html中的 /public的标准答案对我不起作用,因为我想使用 Assets 管道中的CSS主题。 是否有办法让html文件访问 Assets 管道中定义的那些样式? 如果没有, 是否可以创建可以访问管道的自定义错误处理程序?

    最佳答案

    对于Rails 4.1,我更喜欢this answer, add an asset type。但是我还没有尝试过。在Rails 4.0.8上,这三个引用对我有帮助:

  • Dynamic error pages是问题中的第二引用。这对我来说很好。
  • Custom error pages可能是从第一个引用文献或其他引用文献中抄袭而来的,但是通过添加一些有关使用Capybara进行测试的信息,可以加倍努力。
  • 我不想进行Capybara测试,因为我不想更改测试配置。但是,RSpec-Rails Request Specs引导我独立测试这些请求,并查看它们是否已完成并返回正确的内容。

  • 以下是对这三个引用文献所教授内容的简要描述:
  • 将以下设置添加到config/environments/production.rb
    # Route exceptions to the application router vs. default
    config.exceptions_app = self.routes
  • 编辑路由配置config/routes.rb以将错误页面定向到错误 Controller
      # error pages
    %w( 404 422 500 503 ).each do |code|
    get code, :to => "errors#show", :code => code
    end

    会将404、422、500和503页面请求路由到show Controller 的errors操作,该操作的参数code具有状态码的值。
  • 创建 Controller app/controllers/errors_controller.rb。这是全部内容:
    class ErrorsController < ApplicationController

    def show
    status_code = params[:code] || 500
    flash.alert = "Status #{status_code}"
    render status_code.to_s, status: status_code
    end

    end

    我的偏好是在flash.alert
  • 上设置状态消息
  • 自己创建页面。我使用.erb这是app/views/errors/500.html.erb
    <p>Our apology.  Your request caused an error.</p>
    <%= render 'product_description' %>

    这样您就可以渲染部分图像。该页面使用app/views/layouts/application.html.erb或您配置的任何其他布局样板中的所有布局样板进行渲染。其中包括显示来自闪存的状态消息的<div id='alert'><%= alert %></div>
  • 通过添加测试文件spec/requests/errors_request_spec.rb在RSpec中进行了测试。这是该文件的缩写内容,显示了对500状态页的测试:
    require 'rails_helper'

    RSpec.describe "errors", :type => :request do

    it "displays the 500 page" do
    get "/500"
    assert_select 'div#alert', 'Status 500'
    assert_select 'div[itemtype]'
    end

    end

    第一个断言检查Flash警报。第二个断言检查部分内容。
  • 关于ruby-on-rails - Rails : How do I create a custom 404 error page that uses the asset pipeline?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24235805/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com