guard error ActionController::UrlGenerationError:

guard error ActionController::UrlGenerationError:

我开始为我的 rails 应用程序编写测试,并计划在构建实际页面之前编写它们,但我遇到了麻烦。我搜索了堆栈溢出和 google 并尝试了几件事。该路线在我的 routes.rb 文件中指定,看起来像:

resources :welcome

我在测试代码中写入了以下内容。

require 'rails_helper'
require 'spec_helper'

RSpec.describe "Welcomes", type: :request do
  it "checks the welcome page." do
    visit welcome_path
  end
end

我从守卫那里得到以下错误:

Failures:

  1) Welcomes checks the welcome page.
     Failure/Error: visit welcome_path
     ActionController::UrlGenerationError:
       No route matches {:action=>"show", :controller=>"welcome"} missing required keys: [:id]
     # ./spec/requests/welcomes_spec.rb:6:in `block (2 levels) in <top (required)>'

Finished in 0.00347 seconds (files took 1.61 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/requests/welcomes_spec.rb:5 # Welcomes checks the welcome page.

Rails resources 路由集的 index 位于 welcomes_pathwelcome_path 将引用特定的 Welcome 并需要一个 :id 参数。

如果欢迎页面只是一个登录页面而不是实际的资源,您可能只想 config/routes.rb 包含:

get 'welcome', to: 'welcome#index`

第一个welcome是路径(host.com/welcome),to:参数是controller#action.

Rails routing docs 很棒。如果这没有意义,请让他们仔细阅读。

visit welcome_path更改为get '/welcome'