What generates articles_index_path ?

What generates articles_index_path ? I am porting some Rails 4 code to Rails 5 and I hit the following problem when using Rspec: articles_index_path is undefined.

routes.rb

Rails.application.routes.draw do

devise_for :users

root ‘static_pages#root’

resources :users

resources :articles

root to: “articles#index”

byebug

end

In /home/real-estate-data-mining/spec/requests/article_spec.rb I have

require ‘rails_helper’

RSpec.describe “Article”, type: :request do

describe “GET /article” do

it "works! (now write some real specs)" do

  byebug

  # get article_index_path

  get articles_index_path

  expect(response).to have_http_status(200)

end

end

end

When I examine the code environment around the byebug I see

[3, 12] in /home/real-estate-data-mining/spec/requests/article_spec.rb

3: RSpec.describe "Article", type: :request do

4:   describe "GET /article" do

5:     it "works! (now write some real specs)" do

6:       byebug

7:       # get article_index_path

=> 8: get articles_index_path

9:       expect(response).to have_http_status(200)

10: end

11: end

12: end

(byebug) articles_path

“/articles”

(byebug) articles_index_path

*** NameError Exception: undefined local variable or method `articles_index_path’ for #RSpec::ExampleGroups::Article_2::GETArticle:0x00563031a8a0e0

nil

(byebug) article_index_path

*** NameError Exception: undefined local variable or method `article_index_path’ for #RSpec::ExampleGroups::Article_2::GETArticle:0x00563031a8a0e0

nil

(byebug)

This must be a common software pattern in Rails but, damn, I have Googled for what feels like a googol (it’s not a typo) hours without success trying to find what metaprogramming code would generate articles_index_path .

Seeing your routes, try root_path or articles_path.

I’m going to try to answer my own question.

I tracked down this answer: ruby - Rails undefined method `user_index_path` - Stack Overflow code here.

The most important sentence tompave wrote in ruby - Rails undefined method `user_index_path` - Stack Overflow is this:

A model with a plural name, e.g. class Users, will confuse rails.

Analysis:

I was following along on

And one can find there rails generate scaffold Articles title:string body:text

``

``

``

This generates a warning

[WARNING] The model name ‘Articles’ was recognized as a plural, using the singular ‘Article’ instead. Override with --force-plural or setup custom inflection rules for this noun before running the generator.

The second most important sentence in tompave’s answer is

Normally it would be user_path for singular routes (show, update, delete) and users_path for the plural ones (index, create). Here, however, users_path must be used for the singular routes, and Rails will fallback to use users_index_path for index and create.

The person who coded up the Rspec test seems to have known using the plural form “Articles” would generate the articles_index_path method rather than article_path.

And thus my confusion has been addressed.

I wish I could thank tompave directly